计算操作基础实践 5_第1页
计算操作基础实践 5_第2页
计算操作基础实践 5_第3页
计算操作基础实践 5_第4页
计算操作基础实践 5_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章进程与线程1.操作系统中为什么要引入进程?引入进程的核心目的是为了更好地描述和管理程序的并发执行,解决多道程序环境下资源共享和竞争的问题。程序是静态的指令集合,无法反映执行过程的动态变化;进程作为程序的执行实例,能记录程序的运行状态(如CPU寄存器、内存地址空间等)。实现多道程序并发执行,提高CPU和系统资源的利用率,同时让系统能独立地调度、管理和控制每个执行流。提供资源分配和调度的基本单位,使操作系统能对不同程序的资源(内存、CPU、I/O设备)进行隔离和保护,避免相互干扰。进程有哪些基本状态?基本状态之间的转换是怎样发生的?进程的三种基本状态:就绪态、运行态、阻塞态(等待态),部分系统会额外引入创建态、终止态。状态转换过程:就绪态→运行态:调度程序选择一个就绪进程,为其分配CPU时间片。运行态→就绪态:进程的时间片用完,或有更高优先级的进程进入就绪队列抢占CPU。运行态→阻塞态:进程需要等待某事件发生(如I/O请求、等待信号量),主动放弃CPU进入阻塞状态。阻塞态→就绪态:进程等待的事件发生(如I/O完成、收到信号),被唤醒并加入就绪队列。哪些事件会导致系统创建一个进程?常见触发场景:系统初始化:操作系统启动时创建系统进程(如调度进程、守护进程)。用户请求创建新进程:用户通过命令(如./a.out)或图形界面启动程序。父进程主动创建子进程:运行中的进程调用fork()/vfork()等系统调用生成子进程(如shell执行命令、Web服务器创建工作进程)。批处理作业提交:批处理系统中提交新作业时,为其创建进程。服务请求触发:网络服务收到客户端请求时,创建进程处理请求。请简述创建一个进程的过程。以Linux系统为例,创建进程的核心步骤如下:申请空白PCB(进程控制块):为新进程分配唯一的进程标识符(PID),获取一个空的PCB结构。分配资源:为进程分配内存空间(代码段、数据段、栈段),复制父进程的资源(或加载新程序的可执行文件)。初始化PCB:设置进程状态为就绪态,填充程序计数器(PC)、CPU寄存器、进程优先级、内存管理信息等。将进程加入就绪队列:把新进程的PCB插入到系统的就绪进程队列中,等待调度程序调度。当使用fork()创建一个子进程的时候,子进程有什么特点?父进程与子进程被调度的顺序是怎样的?子进程的特点:子进程是父进程的副本,会复制父进程的地址空间(代码段、数据段、堆、栈)、文件描述符、信号处理方式等资源(采用写时拷贝优化,初始时共享物理内存)。子进程拥有独立的PID,有自己的PCB和状态,是独立的调度单位。fork()调用会在父进程返回子进程的PID,在子进程中返回0,以此区分父子进程的执行流。调度顺序:父子进程的调度顺序由操作系统的调度算法决定,不固定。父进程可能先执行,也可能子进程先执行,程序员不能依赖固定的调度顺序编写逻辑。PCB的作用是什么?PCB(进程控制块)是操作系统中描述进程的核心数据结构,作用如下:标识进程:记录进程的唯一PID、状态、优先级等基本信息,让操作系统识别和区分不同进程。保存运行现场:存储进程的CPU寄存器(程序计数器、通用寄存器)、程序状态字等信息,用于进程切换时恢复上下文。管理资源:记录进程的内存地址空间、打开的文件描述符、I/O设备使用情况等资源信息。实现进程调度与控制:PCB是进程队列(就绪队列、阻塞队列)的组成元素,操作系统通过PCB管理进程的状态转换、调度和通信。为什么进程的执行需要用用户态和内核态两种模式?引入两种模式的核心目的是保护操作系统内核和关键资源,提高系统的安全性和稳定性:隔离权限:用户态权限受限,进程无法直接访问内核地址空间、硬件设备和关键系统资源;内核态拥有最高权限,可以执行所有指令、访问所有资源。保护系统安全:防止用户进程直接修改内核数据、访问硬件,避免错误或恶意操作导致系统崩溃。用户进程如需使用系统资源,必须通过系统调用陷入内核态,由内核代为执行。实现资源隔离:不同用户进程运行在用户态,地址空间相互隔离,避免相互干扰。什么是线程?请从调度、并发性、拥有资源、开销等角度描述线程与进程的区别。线程定义:线程是进程内的执行单元,是操作系统调度的基本单位,也被称为轻量级进程。一个进程可以包含多个线程,这些线程共享进程的地址空间和资源。对比维度进程线程调度单位进程是资源分配的基本单位线程是CPU调度和分派的基本单位并发性进程间可并发执行同一进程内的多个线程也可并发执行,粒度更细拥有资源拥有独立的地址空间、文件描述符等资源共享所属进程的资源,自身仅拥有少量栈和寄存器开销创建、切换、销毁开销大(需复制资源)创建、切换、销毁开销小(仅保存少量上下文)通信方式需通过进程间通信(IPC)方式通信可直接读写共享变量通信,无需复杂机制请解释什么是写时拷贝?写时拷贝是一种延迟复制的优化技术,常用于fork()系统调用中:初始状态下,父进程和子进程共享同一份物理内存页面,这些页面被标记为“只读”。当父进程或子进程尝试修改某一共享页面时,操作系统会为修改方复制一份该页面的副本,并将副本映射到进程的地址空间中,再允许修改操作。这种方式避免了fork()时复制整个地址空间的开销,只有在真正修改时才复制数据,大幅提升了进程创建的效率。引入线程池的原因是什么?它有什么优点与缺点?引入原因:线程的创建和销毁存在开销,频繁创建/销毁线程会降低系统性能;线程池可以复用线程,减少开销,同时控制并发线程的数量,避免系统资源耗尽。优点:减少线程创建/销毁的开销,提升任务处理效率。控制并发线程数量,避免大量线程抢占资源导致系统卡顿或崩溃。方便任务管理,可通过队列缓存待处理任务,实现任务的排队和调度。缺点:线程池的大小需要合理配置,过大或过小都会影响性能。任务执行时间过长可能导致队列阻塞,后续任务无法及时处理。线程池中的线程共享资源,需注意线程安全问题(如锁竞争)。openEuler/Linux系统中fork()与vfork()的区别与联系?联系:两者都是Linux系统中创建子进程的系统调用,都会生成一个新的进程,且调用成功后父子进程分别返回不同的值(父进程返回子进程PID,子进程返回0)。区别:对比维度fork()vfork()地址空间处理采用写时拷贝(COW),父子进程初始共享页面,修改时复制子进程完全共享父进程的地址空间,父进程会被阻塞,直到子进程调用exec()或exit()调度顺序父子进程调度顺序不确定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论