Linux一些概念

线程与进程

  1. 进程(ps -aux)

  • 守护进程:控制终端并周期性执行任务或处理事件,不受用户登录或注销的影响
  • 孤儿进程:父程序先退出了,子程序托付给了Init进程
  • 僵尸进程:进程终止,但是父程序未获取其状态,需要保留部分信息
    fork:父进程与子进程拥有相同的内存映像,同样的环境字符串和同样的打开文件(可写的内容是不可共享的)
    进程的三种状态:
    1.运行态:该时刻进程实际占用CPU
    2.就绪态:可运行,因为其他进程正在运行而暂时停止运行
    3.阻塞态:除非发生某种外部时间,否则进程不能运行
    阻塞态不能直接到运行态
    进程的状态转换
  1. 线程:并行实体拥有共享同一个地址空间和所有可用数据的能力,轻量级

进程与线程

线程的状态

  1. 运行
  2. 阻塞
  3. 就绪
  4. 终止
  1. 进程间通信(Inter Process Communication)

a. 匿名管道:半双工,用于父子进程和兄弟进程之间,单独构成一种独立的文件系统,缓冲区有限,无格式字节流
b. 命名管道:提供路径名与之关联,以文件形式存在于文件系统,只要能够访问该路径,就能够彼此通过命名管道通信,先进先出原则
c. 信号量

  • 信号是Linux系统中用于进程间互相通信或者操作的一种机制,信号可以在任何时候发给某一进程,而无需知道该进程的状态。
  • 如果该进程当前并未处于执行状态,则该信号就有内核保存起来,知道该进程回复执行并传递给它为止。
  • 如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消是才被传递给进程。
    信号的生命周期

    d. 消息队列
  • 消息队列是存放于内核中的消息链表,每个消息队列由消息队列标识符表示
  • 只有在内核重启时或显式地删除一个消息队列时,该消息队列才会被真正删除
  • 不需要某个进程在等待消息的到达(与管道的差别)
  • 先进先出原则,可以随机查询,也可以按照消息类型读取
    e. 共享内存
  • 多个进程可以直接读取同一块内存空间,是最快的IPC
  • 为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。进程就可以直接读写这一块内存而不需要进行数据的拷贝,从而大大提高效率。
  • 需要同步与互斥
    参考文献

你可能感兴趣的:(Linux一些概念)