第二篇:进程原理篇

进程模型

  • 从物理内存分配来看,进程就是内存中的某片空间
  • 在任意时刻,cpu上只能执行一条指令,因此在cpu上执行的进程只有一个。
  • 而cpu到底执行哪条指令由物理程序计数器指定,也就是说在物理层面,所有进程共用一个程序计数器

进程的层次结构

  • 进程在执行过程中可以通过系统调用创建新的进程,这个新创建的进程就是子进程,创建进程的称为父进程。这种子子孙孙的创建下去所有的进程称为进程树,unix称为进程组。
  • windows没有进程组的概念,所有的进程地位均等

进程的状态

  • 执行 :进程在运行状态
  • 就绪:进程运行时间太长,操作系统将其挂起,则转换为就绪状态,或者阻塞的进程在等待资源到达之后,就可以随时执行,进入就绪状态
  • 阻塞:执行过程中如果执行了某种阻塞操作,则进入阻塞状态

进程管理

  • 当一个进程创建时,操作系统就要为其创建记录。
  • 维护进程记录的结构就是进程表或者进程控制块(PCB)
  • 维护的信息一般包括:寄存器、程序计数器、状态字、栈指针、优先级、进程ID、信号、创建时间、所耗CPU时间、当前持有的各种句柄
  • 这个进程表保持在操作系统所在的内核空间里

进程的创建过程

创建进程的步骤如下:
  • 分配进程控制块 :PCB
  • 初始化机器寄存器
  • 初始化页表
  • 将程序代码从磁盘读进内存
  • 将处理状态设置为用户态
  • 跳转到程序的起始地址

进程的调度

进程调度的算法
  • 先来先服务调度算法
  • 时间片轮转算法
  • 短任务优先算法

进程通信:管道、记名管道、套接字

管道
  • 根本来说,管道是一个线性数组,类似文件,可以使用文件读写的方式进行访问,但却不是文件,因为通过文件系统看不到管道的存在。
  • 一个进程向这片存储空间的一端写入信息,另一个进程从存储空间另一端读取信息。
  • 管道所占的空间可以是内存也可以是磁盘
  • 创建管道
    • 在shell中是符号 ‘|’
    • 在程序里面,需要使用系统调用 popen()或者pipe()
  • 管道一个重要的特点是使用管道两个进程之间必须存在某种关系;如使用popen需要提供另一端的文件名,使用pipe的两个进程则分别隶属于父子进程
记名管道
  • 如果两个不相关的进程之间进行管道通信,则需要记名管道
  • 命名管道是一个有名字的通信管道,于文件系统共用一个名字空间,即在文件系统中可以看到命名管道,因此不能和文件系统的任何文件名重名
  • ls -l 查看命名管道
  • 一个进程创建一个记名管道后,另一个进程可以使用open来打开这个管道,(无名管道则不能使用open操作)

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

套接字
套接字分类

套接字可以分为本地套接字和网域套接字,而网域套接字根据其提供的数据传输特性分为几大类

  • 数据流套接字:提供双向、有序、可靠、非重复数据通信
  • 电报流套接字:提供双向消息流,数据不一定按序到达
  • 序列包套接字:提供双向、有序、可靠性,包有最大限制
信号
  • 能够迫使一方对我们的通信立即做出回应
  • 不需要事先建立任何连接,可以临时突然与某个进程通信
  • 信号是一个内核数据结构。发送方将数据结构的内容填好,指明该信号的目标进程,发出特定的软件中断。
  • 操作系统受到特定的中断请求后,到特定的内核数据结构里查找信号接收方,进行通知
  • 接到通知的进程则对信号进行处处理,如果对方选择不处理,则被操作系统终止运行
信号量
  • 信号量实际上是一个简单整数
  • 一个进程在信号变为0或者1的情况下运行,并且将信号变为1或者0来防止别的进程推进。当进程完成后,则将信号量再改为0或者1,从而允许其他进程执行
  • 信号量不只是一种通信机制,更是一种同步机制
共享内存
  • 共享内存就是两个进程共同拥有一片内存,对于这片内存的区域,二者均可访问。
  • 要使用共享内存,一个进程首先要创建一片内存空间专门进行通信,其他进程则将该片内存映射到自己的(虚拟)地址空间。
  • 共享内存的两个进程必须放在一台物理机上
消息队列
  • 一列具有头和尾的消息排列;新来的消息放在队列尾部,读取的消息则从队列头部开始。
其他的通信机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值