文章目录
kill 和kill -9的区别,底层实现
1、一般不加参数kill是使用15(SIGTERM终止信号)来杀,这相当于正常停止进程,停止进程的时候会释放进程所占用的资源;他们的区别就好比电脑关机中的软关机(通过“开始”菜单选择“关机”)与硬关机(直接切断电源),虽然都能关机,但是程序所作的处理是不一样的。
2、kill - 9 表示强制杀死该进程;而 kill 则有局限性,例如后台进程,守护进程等;
3、执行kill命令,系统会发送一个SIGTERM信号给对应的程序。SIGTERM多半是会被阻塞的。kill -9命令,系统给对应程序发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。19SIGSTOP也是不会阻塞的。
kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。
零拷贝技术
https://blog.csdn.net/weixin_44038332/article/details/108980796
https://baijiahao.baidu.com/s?id=1648595456047501430&wfr=spider&for=pc
监听进程并自动重启(两种方法)
https://blog.csdn.net/zhanglu1236789/article/details/65629599
进程的状态
五态模型:新建态,就绪态,运行态,等待态,终止态。
七态模型:新建态,就绪态,挂起就绪态,运行态,等待态,挂起等待态,终止态。
虚拟地址和物理地址
逻辑地址(虚拟地址):是与程序在内存中的物理地址无关的访问地址。
相对地址:相对地址是逻辑地址的一个特例,是相对于已知点(通常是程序的开始处)的存储单元。
物理地址(绝对地址):是程序运行时中央处理器实际访问的内存单元地址。
段页式存储管理方式
https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/operating-system/basis.md#32-%E5%B8%B8%E8%A7%81%E7%9A%84%E5%87%A0%E7%A7%8D%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E6%9C%BA%E5%88%B6
引入原因:
分页和分段管理方式各有其优缺点,分页系统能有效提高内存的利
用率,而分段则能更好地满足用户的需要,因此可以将两者结合成一种新
的存储管理方式系统称为“段页式系统”。
基本原理
结合分段和分贝思想,先将用户程序分成若干段并分别赋予段名,再将这些段分为若干页
地址结构:由段号、段内页号和页内地址三项共同构成地址
地址变换的硬件支持
页表存放在内存中,系统另设了一个页表始址寄存器和长度控制寄存器,用来存放当前运行作业的页表始址和页表长。
段表属于进程的线程信息,通常放在内存中。分段存储器需设置一个段表控制寄存器来存放当前占用处理器的作业的段表起始地址和长度。
寻址方式
段式:CPU送出的逻辑地址被存储管理部件自动分解为段号s和段内位移d。以段号s为索引查找段表,若段号为越界,则在段表s项中获得该段所在内存的起始地址b,将b和d相加即得到所要访问内存单元的物理地址。
页式:页表记录该作业的页号----物理块号的映射,地址变换的过程实际是根据页号获得物理块号的过程。CPU送出逻辑地址后,将这个逻辑地址分解为页号和页内偏移两部分,根据页号找到相应的内存页,该内存页起始地址加上页内偏移即物理地址。
协程
https://www.zhihu.com/question/63520385/answer/667993063
https://blog.csdn.net/daaikuaichuan/article/details/82951084
I/O密集型程序和运算密集型程序的定义?如何优化?
http://blog.sina.com.cn/s/blog_cf13df260102wfta.html
虚拟内存
定义:采用自动实现部分装入和部分对换功能,为用户提供一个比物理主存容量大得多的、可寻址的一种主存。
https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/operating-system/basis.md#41-%E4%BB%80%E4%B9%88%E6%98%AF%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98virtual-memory
Linux中占用某个端口的进程在磁盘上的位置
先找出占用某个端口的进程
netstat -tunlp|grep 6379
ps命令查看进程信息:
ps -ef|grep 7417
进程的组成
-
进程控制块PCB
用来存储进程的标志信息、现场信息和控制信息。线程创建时建立PCB,进程撤销时回收,与进程一一对应。 -
程序块
通常是纯代码。 -
数据块
数据块是进程的私有地址空间,是程序运行时加工处理的对象,包括全局变量、局部变量和常量、用户栈等。 -
核心栈
进程在核心态工作时使用,用来保存中断/异常现场,保存函数调用的参数和返回地址。
进程实体的内容随着进程的执行不断发生变化,某时刻进程实体的内容即是进程映像。
进程切换
- 保存被中断进程的处理器现场信息。
- 修改被中断进程的进程控制块的有关信息,如进程状态。
- 把被中断进程的进程控制块加入相关队列。
- 选择下一个占用处理器的进程。
- 修改被选中进程的进程控制块有关信息。
- 根据被选中进程设置操作系统用到的地址转换和存储保护信息。
- 根据被选中进程的信息恢复处理器现场。
模式切换
- 保存被中断进程的处理器现场信息。
- 处理器由用户态切换到内核态,准备执行中断处理程序。
- 根据中断级别设置中断屏蔽位。
- 根据系统调用号或中断号,从系统调用表或中断入口地址表找到系统服务程序或中断处理程序的地址。
每台计算机通常会提供一条特权指令,称为加载程序状态字来实现核心态向用户态的转换。