操作系统之进程篇1

1.进程的出现,让我们需要对进程进行分离存储,而有了内存管理;需要不同进程有条不紊的往前推进而有了进程调度。

2.为什么要有进程?什么是进程?

为了实现程序的并发执行,我们发明了进程。一个程序加载到内存后就变成了进程。

3.注意不是所有进程都一定要终结,实际上,许多系统进程是不会终结的,除非强制终止或关闭计算机。

4.什么时间造成进程的产生?

1)系统初始化:在一个系统初始化时,将有许多进程产生,产生的这些进程是系统正常运行必不可少的。

2)执行进程创立程序:如双击了一个可执行文件。

3)用户请求创立新进程:用户的程序里通过系统调用直接生成了新的进程。

5.什么时间造成进程的消亡?

1)寿终:进程运行完成而退出。

2)自杀:进程因错误而自行退出。

3)他杀:进程被其它进程所终止。

4)处决:进程因异常而被强制终结。

6.那些原因引起了进程挂起?

1)一个进程在运行过程执行了某种阻塞操作,如读写磁盘,由于阻塞操作需要等待结果才能继续执行,因此操作系统将这个进程挂起。

2)进程执行时间过长,为了公平,系统将其挂起。

7.进程的3种典型状态,4种转换?

8.操作系统对进程要记录那些信息?

操作系统对进程要记录的最基本的信息是进程表和进程控制块(Process Control BlockPCB).不同的操作系统维护的进程资料不尽相同,但基本都包括寄存器,程序计数器,状态字,栈指针,优先级,进程ID,信号,创建时间,所耗CPU时间等。而所采纳的数据结构主要还是线性表,链表和结构,树和图结构。

9.进程管理的最大问题的根源是:资源的最优分配。

10.多进程时CPU的效率简述

11.子进程

12.进程的不足之处?

1)它只能在一个时间做一件事,如果想同时做两件或多件事,进程就不够用了。

2)进程在执行的过程中阻塞被挂起,例如等待输入,这样即使进程中有部分工作并不依赖于输入数据,也无法推进。

为了解决这两个问题,人们又发明了线程。

时间: 2024-08-28 18:52:33

操作系统之进程篇1的相关文章

操作系统之进程篇(1)

1.进程介绍: 1.1 进程模型: 进程是一个程序的实际执行,包含了程序计数器的状态,寄存器和变量等等! 程序可以看成是一个状态的序列,程序在不同时刻呈现出不同的状态,而这种状态的前后交替过程可以看成是程序的执行过程.概念上来说,每个程序有自己的虚拟CPU,但在现实中CPU在不同的进程间来回切换,又称这种切换为伪并行! 进程和程序差别看似微小,实际上却是十分精妙; 可以将计算机执行程序的过程看成一次有趣的烹饪过程.食谱就是程序,厨师就是CPU,而食材是输入,得到的输出是鲜美可口的美食. 当厨师在

操作系统之进程篇(3)

1. 信号量机制的缺陷问题: 在上面的生产者消费者实例中,信号量的工作机制如下(我们以生产者的代码为例): 1 down(&empty); 2 down(&mutex); 3 enter_item(item); 4 up(&mutex); 5 up(&full); 如果交换1号和2号语句,变成: 1 down(&mutex); 2 down(&empty); 那么可能会出现下面的情形: mutex变成0,此时empty == 0,那么生产者阻塞; 此时消费者

操作系统之进程篇(2)

进程间通信(InterProcess Communication,IPC): 进程通信中遇到的三个问题: a) 进程之间如何进行信息的传递? b) 多个进程在执行自己的核心代码时如何能够不相互影响? c) 当进程之间出现相互依赖关系时,如何才能合理的调度进程的执行顺序! 1. 竞争情形: 当两个或多个进程同时读写某个共享资源的时候,程序运行的最终结果由各个进程的具体执行的情况所决定! 如何避免竞争情形的出现,那么我们首先引入关键代码区的定义: 程序中访问共享内存或其他共享资源的代码区被称为关键代

操作系统之进程篇(4)--经典进程间通信(IPC)问题

1. 哲学家进餐问题: 问题描述: 五个哲学家在一个圆桌上进餐,每人的面前放了一盘意大利面,两个盘子之间有一个叉子,但是由于盘子里面的面条十分光滑,需要两个叉子才能进行就餐行为.餐桌的布局如下图所示: 假设哲学家的生活中只有两个活动:吃饭和思考[吃饭维持自身之生存,思考探究生存之意义],当然这样的哲学家在现实之中是不存在的.当一个哲学家在殚精竭虑之时,饥饿感随之而来,这是他会拿起左右手边的两个叉子来想享用这俗世之中的美味.酒足饭饱之后,又"躲进小楼成一统,管他春夏与秋冬"去了.问题是:

操作系统之进程篇2

1.进程调度主要要解决的问题是什么? 任意时刻到底由哪个进程执行,那些不执行.正在进展中的程序使用CPU的模式有3种:程序大部分时间在CPU上执行(CPU导向,又称计算密集型程序):程序大部分时间在进行输入输出(I/O导向,又称输入输出密集型程序):程序介入前两种模式之间(平衡型程序). 2.进程调度的目标? 达到极小化平均响应时间,极大化系统吞吐率,保持系统各个功能部件均处于繁忙的状态,并提供某种貌似公平的机制. 3.调度算法有哪些?各算法的利弊? 1)先来先服务FCFS(First Come

进程篇(1: 进程运行环境)--请参照本博客“操作系统”专栏

2014年5月30日  下午1:40:59 1. Unix 进程执行环境: 1.1 终止处理程序: ISO C 规定,一个程序可以登记多达32个函数,这些函数将由exit自动调用.我们称这些函数为终止处理程序(exit handler),并调用atexit函数来登记这些函数.该函数的原型如下: 1 #include <stdlib.h>2 3 int atexit(void (*function)(void)); exit调用这些终止程序的顺序与他们登记时的顺序相反(先登记后调用).同一个函数

进程篇(4: 基本进程控制:其他相关控制)--请参照本博客“操作系统”专栏

1. 更改进程的用户ID和组ID:为什么我们要更改用户ID和组ID的呢? 在UNIX系统中,特权是基于用户和组ID的.当用户需要增加特权,或要访问某个当前没有能力访问的文件时,我们需要更改自己的权限,以让新的ID具有合适的特权或访问权限.与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要跟换用户ID或组ID;一般而言,在设计应用程序时,我们总是试图使用"最小特权"模型.依照此模型,我们的程序应当值具有为完成特定的任务所需要的最小特权. NAME getuid, geteui

进程篇(2: C程序的存储空间布局)--请参照本博客“操作系统”专栏

1.  C程序的存储空间布局: C 程序由下面几个部分组成: 正文段(即是代码段): 这是由CPU执行的机器指令部分.通常,正文段是可以共享的,并常常是可读的,以防止程序因为意外原因而修改自身的代码! 初始化数据段(即数据段): 它包含了程序中需要明确的赋初值的变量. 非初始化数据段(bss段):在程序开始执行之前,内核将此段中的数据初始化为0或空指针. 栈.自动变量以及每次函数调用时所需保存的信息都存放在此段中.每次调用函数时,返回地址以及调用者的环境信息(如某些寄存器的值)都存放在栈中.然后

进程篇(3: 基本进程控制:进程的退出)--请参照本博客“操作系统”专栏

1. exit函数: 进程的五种正常的结束方式: 在main函数中执行return语句,这等效于exit; 调用exit函数.此函数由ISO C定义,其操作包括运行各终止处理程序,然后关闭所有标准I/O流等. 调用_exit或_Exit函数,ISO C定义了_Exit函数,目的是为了为进程提供一种无需运行终止处理程序和信号处理程序而终止的方法.并不处理标准I/O流! 进程的最后一个线程在其启动例程中执行返回语句,然后该进程以终止状态0返回. 进程的最后一个线程调用pthread_exit函数.