定义:进程是一个具有一定独立功能的程序的一次运行活动。
特点: 动态性、并发性、独立性、异步性
状态:就绪-进程调度-->执行-I/O请求-->阻塞--->就绪
<----------------------------I/O完成
<-------时间片完
进程ID:
PID:表示进程的唯一数字,
父进程的ID(PPIND)
启动进程的用户ID(UID)
进程互斥:进程互斥是指当有若干进程都要使用某个资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止。
临界资源:操作系统中将一次只允许一个进程访问的资源称为临界资源。
临界区:进程中访问临界资源的[那段程序代码]称为临界区。为实现对临界资源的互斥访问,应保证诸进程互斥地进入各自的临界区。
进程同步:一组并发进程按[一定的顺序],执行的过程称为进程间的同步。具有同步关心的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或事件。
进程调度:
概念:按一定的算法,从一组待运行的进程中选出一个来占有CPU运行。
调度方式: 抢占式、非抢占式.
调度算法:
先来先服务调度算法
短进程优先调度算法
高优先级优先调度算法
时间片轮转法
死锁:多个进程因竞争资源而形成一种僵局,若无外力作用,这些进程都将永远不能再向前推进。
例如:A进程占有资源1企图获取资源2,B进程占有资源2企图获取资源1;如果它们谁都不放,将会死锁。
进程的内存映像
解释
BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。
数据段:在采用段式内存管理的架构中,数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段:在采用段式内存管理的架构中,代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许自修改程序。 在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
栈(stack):在计算机科学中,是一种特殊的链表形式的数据结构,它的特殊之处在于只能允许在链表的一端(称为栈顶,英文为top)进行添加 和删除操作。另外堆栈数据结构的实现也可以通过数组来完成。栈Stack是存放程序中局部变量的内存区,另外栈stack用来保存函数调用的现场。栈 stack由系统自动分配,用户不需要关心其分配和释放。
堆(Heap):程序运行时供程序员来支配的一段内存。 用于进程运行时动态分配内存。堆的大小不固定,可根据程序运行动态变化。由程序中的new/delete等控制。