操作系统 --- 进程

进程

·基本概念
进程是正在运行的程序的实例,是一个具有一定的独立功能的程序关于某个数据集合的一次运行活动。
进程是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
从内核的角度看,进程由用户内存空间和一系列内核数据结构组成,其中用户内存空间包含了程序代码及代码所使用的变量,而内核数据结构则用于维护进程状态信息。

·进程控制块 — PCB
内核为每个进程分配一个PCB(Processing Control Block)进程控制块,Linux内核的进程控制块是task_struct结构体。
task_struct结构体的内部成员有:
进程id、进程的状态、虚拟地址空间的信息、控制终端的信息、和信号有关的信息、会话和进程组等

·进程状态模型
三态模型:就绪态、运行态、阻塞态
在这里插入图片描述

五态模型:新建态、就绪态、运行态、阻塞态、终止态
在这里插入图片描述

·进程创建
fork() 函数
创建成功 => 子进程中返回值为0,父进程中返回值为子进程ID
失败 => 返回-1

失败的两个主要原因:
当前系统的进程数已经达到了系统规定的上限,这时errno的值被设置为EAGAIN
系统内存不足,这时errno的值被设置为ENOMEM

·进程控制

 孤儿进程:父进程运行结束,但子进程还在运行(为运行结束),这样的进程称为孤儿进程。
 每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为init,而init进程会循环地wait(),直到子进程退出。
 
 僵尸进程:每个进程结束后,都会释放自己地址空间中的用户区数据,但内核区的PCB没有办法自己释放掉,需要父进程释放。进程终止时,父进程尚未回收,子进程残留资源(PCB)存放在内核中,变成僵尸进程。
 僵尸进程不能被kill-9杀死,只能通过父进程调用wait()或waitpid(),直至子进程退出。
 
 进程回收:在每个进程退出的时候,内核会释放该进程的所有资源、包括打开的文件、占用的内存等。但是仍然为其保留一定的信息,这些信息主要指进程控制块PCB的信息(包括进程号、退出状态、运行时间等)
 父进程可以通过调用wait()或waitpid()得到它的退出状态同时彻底清除掉这个进程。

·进程通信
匿名管道(无名管道):是UNIX系统IPC(进程间通信)的最古老形式,所有的UNIX系统都支持这种通信机制。
特点:
 管道其实是一个在内核内存中维护的缓冲器,但这个缓冲器的存储能力是有限的。
 管道拥有文件的特质:读操作、写操作,匿名管道没有文件实体。
 一个管道是一个字节流,使用管道时不存在消息或消息边界的概念,从管道读取数据的进程可以读取任意大小的数据块。
 通过管道传递的数据是顺序的,在管道中的数据的传递方向是单向的,一端用于写入,一端用于读取,管道是半双工的。
 从管道读数据是一次性操作,数据一旦被读走,它就从管道中被抛弃,在管道中无法使用lseek()来随机的访问数据。
 匿名管道只能在具有公共祖先的进程(父子进程、兄弟进程)之间使用。

有名管道(FIFO):不同于匿名管道之处在于它提供了一个路径名与之关联,以FIFO的文件形式存在于文件系统中,并且其打开方式与打开一个普通文件是一样的,这样即使与FIFO的创建进程不存在血缘关系的进程,只要能访问该路径,就能够彼此通过FIFO相互通信。
FIFO与匿名管道的不同点:
 FIFO在文件系统中作为一个特殊文件存在,但FIFO中的内容却存放在内存中
 当使用FIFO的进程退出后,FIFO文件将继续保存在文件系统中以便以后使用
 FIFO有名字,不相关的进程可以通过打开有名管道进行通信

·信号
基本概念:信号是事件发生时对进程的通知机制,有时也称之为软件中断,是一种异步通信的方式。
使用信号的两个主要目的是:
 让进程知道已经发生了一个特定的事情
 强迫进程执行它自己代码中的信号处理程序

信号的特点:
简单、不能携带大量信息、满足某个特定条件才发送、优先级比较高

信号的5种默认处理动作:
 Term终止进程
 lgn当前进程忽略掉这个信号
 Core终止进程,并生成一个Core文件
 Stop暂停当前进程
 Cont继续执行当前被暂停的进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值