回顾:操作系统的功能
1.处理器管理
2.存储管理
3.设备管理
4.文件管理
5.作业管理
进程
-
概念
可并发执行、具有独立功能的程序(program)关于某个数据集合的一次执行活动。是操作系统进行资源分配和调度运行的基本单位。 -
进程的特性:
动态性(进程的最基本特征。进程具有一定的生命期。进程有产生、执行、暂停、死亡等过程。)
并发性(指多个进程实体同存于内存中,能在一段时间内同时运行。)
独立性(进程是一个能独立运行的单位;系统进行资源分配和调度的独立单位)
异步性(进程按各自独立的、 不可预知的速度向前推进。)
结构性(每个进程至少包含3个组成要素:程序块、数据块和进程控制块。) -
结构
-
PCB(PCB是进程存在和运行的唯一标志。)包含如下信息:
-
Linux中把对进程的描述结构叫做task_struct
-
进程状态与转换
三态模型:运行态、就绪态、阻塞态
五态模型:运行态、就绪态、阻塞态、新建态、结束态
七态模型:运行态、就绪态、阻塞态、新建态、结束态、就绪挂起、等待挂起 -
进程调度(当有多个进程要使用系统资源(一般是CPU)时,必须按照一定的原则选择进程)
-
Linux内核有三种调度方法:
SCHED_OTHER (分时调度策略)
SCHED_FIFO(实时调度策略,先到先服务)
SCHED_RR(实时调度策略,时间片轮转)
这三种策略均基于优先级! -
线程(运行在同一个进程中的各个并发任务称为该进程的线程。
-
为什么要设计线程?
加快进程的执行
充分利用处理器资源 -
并发进程之间存在两种基本关系:
竞争(互斥)关系
协作(同步)关系 -
并发进程中与共享变量有关的程序段叫做临界区,共享变量代表的资源叫做临界资源。
-
进程互斥方法:上锁与开锁
w=0表示资源空闲可用
w=1表示资源正被使用
优点:实现进程的互斥很简单。
缺点:处理机效率不高,因为上锁原语中的条件测试操作可能引起CPU“忙等待”(等待进入临界区的进程不立即释放CPU)。 -
进程死锁是多个进程由于无限期陷入僵持局面后的结果。死锁产生的必要条件有4个(互斥、占有与等待、不剥夺、循环),只要破坏其中之一,即可防止。
-
进程通信
(1)管道:管道是连接读写进程的一个共享文件,发送进程以字符流形式把大量数据送入管道尾部,接收进程从管道头部接收数据。管道须互斥使用,即管道读写不能同时进行。一个进程正在执行管道写入或读出操作时,另一进程须等待。(管道类型分为匿名管道和有名管道)
(2)共享内存:允许两个或多个进程共同访问的物理内存区域(公共内存)
(3)消息(Message)是格式化的数据,在计算机网络中称报文。消息(报文)由消息头和消息体组成。消息传递的通信方式可以分成直接通信方式(必须显示地给出对方的进程ID的通信方式。)和间接通信方式(通过某种中间实体(信箱)进行信息交换)两种
(4)信号:信号是一种软中断,是对硬件中断机制的软件模拟,一个进程可以向另一进程发送某一信号通知该进程某个异常事件发生。接收信号的进程就会被中断,需要对该信号代表的事件进行处理。
(5)进程间通信(IPC)机制的对比
管道(pipe):一种半双工的通信方式。无名管道只在有亲缘关系的进程间使用,命名管道任何进程间都能通信。
共享内存(shared memory):最快的通信方式。往往与其他通信机制配合使用,以实现进程间的同步和通信。
消息(message):消息队列传递的是不连续的、有格式的信息,比较灵活。任何进程之间都可以通信。
信号(signal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生(中断)。主要作为进程间以及同一进程不同线程之间的通信手段。