校招准备之:操作系统——进程与线程-精品文档资料整理.docx
《校招准备之:操作系统——进程与线程-精品文档资料整理.docx》由会员分享,可在线阅读,更多相关《校招准备之:操作系统——进程与线程-精品文档资料整理.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、校招准备之:操作系统进程与线程 操作系统中进程与线程的概念比拟抽象 其实是挺不容易掌握的。在?当代操作系统?一书的第二章有专门的介绍 并且这一局部是整部书最重要的课程。我还记得我们教师讲 “掌握了进程与线程的概念 根本就掌握了操作系统的百分之六七十“。如今回想起来有点懊悔自己当初怎么没有好好把握时机认真学习这一块。但是为时不晚 这个时候学总比将来学好 下面开场一边学习?当代操作系统?此篇幅的知识一边做笔记。 进程 如今考虑直邮一个用户的pc。当启动系统的时候 会机密启动许多进程。比方 启动一个进程用来等待进入的电子邮件 或启动另一个防病毒进程周期性检查是否有新的有效的病毒定义。另外 某个用户进
2、程也许会在所有用户上网的时候打印文件等。所有这些活动需要管理 于是一个支持多进程的多道程序系统就显得很有用途。 一个进程就是一个正在执行程序的实例 包括程序计数器、存放器以及变量的当前值。从概念上讲 每个进程拥有自己饿虚拟cpu 当然 实际上真正的cpu在各个进程之间来回切换。而这种快速的切换称为多道程序设计。 另外 进程以及程序之间的区别是微妙的 但非常重要。有一个关键的思想 一个进程是某种类型的活动 它有程序、输入、输出和状态。单个处理器可以被假设干进程分享 它使用某种调度算法决定何时停顿一个进程的工作 并且转而为另一个进程提供效劳。 有什么事件可以导致进程的创立的呢 4种 1 系统初始化
3、。 2 执行了正在运行的进程所调用的进程创立系统调用 3 用户恳求创立了一个新进程 4 一个批处理作业的初始化 从技术上看 所有这些情形中 新进程都是由于一个已存在的进程执行了一个用于创立进程的系统调用而创立的。 创立进程 在unix系统中 只有一个系统调用可以用来创立新进程 fork。这个系统调用会创立一个与调用进程一样的副本。在调用了fork之后 这两个进程 父与子进程 拥有一样的存储映像、同样的环境字符串以及同样的翻开文件。这就是全部情形。通常 子进程接着执行execve或者一个类似的系统调用 以修改其存储映像并运行一个新的程序。 记住 进程创立之后 父进程以及子进程有各自不同的地址空间
4、 假如其中某个进程在其地址空间中修改了一个字 这个修改对其他进程而言是不可见的。在unix中 子进程的初始地址空间是父进程的一个副本 但是这里涉及两个不同的地址空间 不可写的内存区是分享的 某些unix的实现使程序正文在两者之间分享 因为它不能被修改 。但是 对于一个新创立的进程而言 确实可能分享其创立者的其他资源。 小知识 停留在后台处理诸如电子邮件、web页面、新闻、打印之类活动的进程称为守护进程。 终止进程 通常由以下条件引起 1 正常退出 自愿的 exit 2 出错退出 自愿的 3 严重错误 非自愿 4 被其他进程杀死 非自愿 kill 进程的层次构造 在unix中 进程以及它的所有子
5、女和后裔共同组成一个进程组。当用户从键盘发出一个信号时 该信号被送给当前与键盘相关的进程组中的所有成员 它们通常是在当前窗口创立的所有活动进程 。每个进程可以分别捕获该信号、忽略该信号或者采取默认的动作 即被该信号被杀死。 一个例子用于讲明进程层次的作用。考虑unix在启动时怎样初始化自己。一个称为init的特殊进程出如今启动映像中。当它开场运行时 读入一个讲明终端数量的文件。接着 为每个终端创立一个新进程。这些进程等待用户登陆。假如有一个用户登录成功 该登录进程就执行一个shell准备接收命令。所接收的这些命令会启动更多的进程 以此类推。这样 在整个系统中 所有的进程都属于以init为根的一
6、棵树。 进程的状态 当一个进程在逻辑上不能继续运行时 它就会被阻塞 典型的例子是它在等待可以使用的输入。还可能有这样的情况 一个概念上可以运行的进程被迫停顿 因为操作系统调度另一个进程占用了cpu。 以上两种情况其实是完全不同的。第一种情况 进程挂起是程序自身固有的原因 键入用户命令行之前无法执行命令 。第二种情况是由系统技术上的原因引起 没有足够的cpu 所以不能使每个进程都有一台它私用的处理器 三种状态 运行态 该进程实际占用cpu 就绪态 可运行 但因为其他进程正在运行而暂时停顿 阻塞态 除非某种外部事件发生 否那么进程不能运行 进程的实现 为了实现进程模型 操作系统维护着一张表格 一个
7、构造数组 即进程表。每个进程占用一个进程表项。该表项包含了进程状态的重要信息 包括程序计数器、堆栈指针、内存分配状况、所翻开的文件的状态、账号以及调用信息 和其他在进程由运行态转换到就绪态或者阻塞态时必须保存的信息 进而保证该进程随后能再次启动就像从未被中断过一样。 所有的中断都从保存存放器开场 对于当前进程而言 通常是在进程表项中。 线程 传统os中 每个进程有一个地址空间以及一个控制线程。不过经常存在同一个地址空间中准并行运行多个控制线程的情形 这些线程就像 差不多 别离的进程 分享的地址空间除外 。 线程的使用 产生线程的必要性 1 在许多应用中同时发生着多种活动。有了多线程概念 参加了
8、一种新的元素 并行实体分享同一个地址空间以及所有可用数据的才能。而这正是多进程模型无法表达的。 2 线程比进程更轻量级 比进程更快创立更容易撤销。 3 性能。假设多个线程都是cpu密集型的 那么并不能获得性能上的增强 但是假如存在大量计算以及大量io处理 拥有多线程允许这些活动彼此重叠进展 会加快应用程序执行的速度。 多线程提供一种解决方案 有关进程可以用一个输入线程、一个处理线程以及一个输出线程构造。输入线程把数据读入到输入缓冲区中 处理线程从输入缓冲区中取出数据 处理数据 并把结果放到输出缓冲区中 输出线程把这些结果写道磁盘上。 经典线程模型 进程用于把资源集中到一起 线程那么是在cpu上
9、被调度执行的实体。多线程分享同一个地址空间以及其他资源 多个进程分享物理内存、磁盘、打印机以及其他资源。 多线程进程在单cpu系统中运行时 线程轮流运行。其实这样的话以及多进程执行类似的。cpu在线程之间的快速切换 系统制造了不同的顺序进程并行运行的假象。但是呢 进程中的不同线程不像不同进程之间那样存在很大的独立性。所有的线程都有完全一样的地址空间也就意味着它们分享同样的全局变量。又因为各个线程可以访问进程地址空间中的每一个内存地址 所以一个线程可以读、写或者甚至去除另一个线程的堆栈。线程之间时没有保护的 原因是1 不可能。2 也没有必要。因为线程是为了合作而不是竞争。 所以讲对于三个没有关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 准备 操作系统 进程 线程 精品 文档 资料 整理
限制150内