第三周测验:进程线程模型

  1. 多道程序设计技术是操作系统中最早引入的软件技术,引入它的目的是

    • 提高系统的实时响应速度
    • 充分利用内存,有利于数据共享
    • 充分利用CPU,提高CPU利用率
    • 提高文件系统性能,减少内外存之间的信息传输量
  2. 下列关于进程控制块PCB的叙述中,哪一个是错误的?

    • 操作系统利用PCB描述进程的基本特征

    • 一个PCB唯一对应一个进程

    • PCB可用于描述进程的运动变化过程

    • PCB通常保存在磁盘上

      PCB进程控制块是进程的静态描述,由PCB、有关程序段和该程序段对其进行操作的数据结构集三部分组成

      PCB一般包括:

      1.程序ID(PID、进程句柄):它是唯一的,一个进程都必须对应一个PID。PID一般是整形数字

      2.特征信息:一般分系统进程、用户进程、或者内核进程等

      3.进程状态:运行、就绪、阻塞,表示进程现的运行情况

      4.优先级:表示获得CPU控制权的优先级大小

      5.通信信息:进程之间的通信关系的反映,由于操作系统会提供通信信道

      6.现场保护区:保护阻塞的进程用

      7.资源需求、分配控制信息

      8.进程实体信息,指明程序路径和名称,进程数据在物理内存还是在交换分区(分页)中

      9.其他信息:工作单位,工作区,文件信息等

  3. 在某一条件下,进程会在状态之间相互转换。下列哪一种进程状态转换不会发生?

    • 等待态→就绪态
    • 就绪态→运行态
    • 就绪态→等待态
    • 运行态→等待态
  4. 假设某单处理器计算机系统中有10个进程,则系统中处于等待状态的进程最多有几个?

    • 0
    • 1
    • 9
    • 10
  5. 下列关于进程控制操作的叙述中,哪一个是不正确的?

    • 一个进程可以使用创建原语建立一个新的进程
    • 撤销进程就是释放该进程占有的内存资源
    • 阻塞原语使一个进程变为等待状态
    • 唤醒原语使从等待队列中撤出进程

    进程撤销

    释放进程占有的资源只是撤销进程过程的一部分。

    当进程完成任务或在执行的过程中发生异常时,系统将调用进程终止原语来终止该进程。根据被终止进程的标识符从PCB集合中查找到该进程的PCB,从中读出该进程的状态,终止该进程的执行;若干该进程还有子孙进程,应该讲其所有子孙进程终止,防止它们成为不可控进程;然后回收进程所拥有的资源,最后将被终止进程从所在队列中移出,等待其它程序来收集信息

  6. 下列哪一项工作不是创建进程时所作的?

    • 给新进程分配一个唯一标识
    • 给新进程分配虚拟地址空间
    • 初始化新进程的进程控制块
    • 将处理器控制权交给新进程
  7. 进程控制原语有多种,下列哪一项不是进程控制原语?

    • 改变进程优先级
    • 挂起进程
    • 进程唤醒
    • 进程上下文切换

    创建原语的执行过程:

    1. 为新进程分配一个唯一的进程标识号,并申请一个空白的PCB(PCB是有限的)。若PCB申请失败则创建失败。
    2. 为进程分配资源,为新进程的程序和数据、以及用户栈分配必要的内存空间(在PCB 中体现)。注意:这里如果资源不足(比如内存空间),并不是创建失败,而是处于”等待状态“,或称为“阻塞状态”,等待的是内存这个资源。
    3. 初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
    4. 如果进程就绪队列能够接纳新进程,就将新进程插入到就绪队列,等待被调度运行。

    撤销原语的执行过程:

    1. 根据被终止进程的标识符,检索PCB,从中读出该进程的状态。
    2. 若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程。
    3. 若该进程还有子进程,则应将其所有子进程终止。
    4. 将该进程所拥有的全部资源,或归还给其父进程或归还给操作系统。
    5. 将该PCB从所在队列(链表)中删除。

    唤醒原语的执行过程:

    1. 在该事件的等待队列中找到相应进程的PCB。
    2. 将其从等待队列中移出,并置其状态为就绪状态。
    3. 把该PCB插入就绪队列中,等待调度程序调度。

    阻塞原语的执行过程是:

    1. 找到将要被阻塞进程的标识号对应的PCB。
    2. 若该进程为运行状态,则保护其现场,将其状态转为阻塞状态,停止运行。
    3. 把该PCB插入到相应事件的等待队列中去。

    进程切换的过程如下:

    1. 保存处理机上下文,包括程序计数器和其他寄存器。
    2. 更新PCB信息。
    3. 把进程的PCB移入相应的队列,如就绪、在某事件阻塞等队列。
    4. 选择另一个进程执行,并更新其PCB。
    5. 更新内存管理的数据结构。
    6. 恢复处理机上下文。
  8. 在UNIX操作系统中运行如下C语言程序:

    int main()
    {
     pid_t pid;
     int a=5;
     pid = fork();
        
     if (pid==0)   
         printf ("This is the son process, a=%d ", --a);
     else
         printf ("This is the dad process, a=%d ", ++a);
    }
    

    假设编译链接过程正确且程序正确执行,那么运行结果是

    • This is the son process, a=4

      This is the dad process, a=6

    • This is the son process, a=4

    • This is the dad process, a=6

    • This is the dad process, a=4

      This is the son process, a=6

    fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:

    1)在父进程中,fork返回新创建子进程的进程ID;
    2)在子进程中,fork返回0;
    3)如果出现错误,fork返回一个负值;

    在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。

  9. 进程映像由几部分组成,下列哪一项不属于进程映像?

    • 进程控制块
    • 程序代码
    • 用户栈
    • 就绪队列

    进程映像是进程执行的上下文环境,包括处理机中各通用寄存器的值,进程的内存映像,打开文件的状态和进程占用资源的信息等。它是一个内存级的实体并由:

    进程控制块(PCB)
    进程执行的代码(code)/程序
    进程执行时所用的数据/ 数据集合
    进程执行时使用的工作区组成。

  10. 某操作系统在进程中引入了多个执行序列——线程,那么下列叙述中,哪些描述了进程与线程的联系和区别?

    • 进程是资源分配的基本单位
    • 进程是处理器调度的基本单位
    • 线程是资源分配的基本单位
    • 线程是处理器调度的基本单位
    • 线程不能独立于进程而存在
  11. 下列各种事件中,一定产生进程状态改变的事件是

    • 运行的进程正常退出
    • 运行的进程因种种原因而阻塞
    • 新进程创建成功
    • 阻塞的进程被唤醒
    • 运行的进程时间片用完
  12. 进程运行时,其硬件状态保存在相应寄存器中;当它被切换下CPU时,其硬件状态保存在内核栈中。(❌)

    将CPU硬件状态从一个进程换到另一个进程的过程称为上下文切换

    进程运行时,其硬件状态保存在CPU上的寄存器中,这些寄存器包括:程序计数器、程序状态寄存器、栈指针、通用寄存器、其他控制寄存器的值

    进程不运行时,这些寄存器的值保存在进程控制块PCB中;当操作系统要运行一个新的进程时,将PCB中的相关值送到对应的寄存器中

  13. 当某个正在执行的进程需要进行I/O操作时,可以通过调用挂起原语将自己从运行状态变为等待状态。(❌)

    阻塞原语

  14. 用户级线程执行时,同一进程不同线程的切换不需要内核支持。(✔️)

  15. 在支持线程的操作系统中,同一个进程中的各个线程共享该进程的用户栈。(❌)

    线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID

    堆:是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。

    栈:是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立,因此,栈是thread safe的。操作系统在切换线程的时候会自动的切换栈,就是切换SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容