摘要:2.3 Process Scheduling进程调度 注意:我们将在2.3节之前做2.4节,因为2.3节和2.5节是密切相关的;在我看来,介于2.4之间似乎有些尴尬。在处理器上调度进程通常称为处理器调度、进程调度、简单地调度。正如我们在本课程后面将看到的,更准确的名称是短期处理器调度。当我们学习调度
阅读全文
摘要:Challenges and Questions挑战和问题 假设一个进程有几个线程,如果这些线程之一执行了以下操作,会发生什么? 执行fork()开辟一个新进程; 关闭一个文件; 请求更多的内存; 通过lseek移动文件指针; 看一个好玩的问题理解一下: pid_t pid1 = -1, pid2
阅读全文
摘要:2.2 线程 进程的一个关键特性是进程具有一定的隔离性:当一个程序执行x++时,在同时运行的另一个程序中的x值并不会增加,但是这一特性同样会带来一些问题。 如上图所示,线程背后的思想是让多个控制线程在单个进程的地址空间中运行。地址空间是一个内存管理的概念,在本章节中我们可以先将地址空间看成是进程运行
阅读全文
摘要:2.1.5 进程的实现 操作系统将关于每个进程的数据组织在一个表中,很自然地称为进程表(Process Table)。该表中的每一项称为一个进程表项(Process Table Entry)或进程控制块(Process Control Block)。 进程表的特点:a. 每个进程表项表示一个进程;b
阅读全文
摘要:2.1.4 Process States and Transitions进程状态和转换 首先只需要看上面一个三角形之间的关系,首先表明了进程的三个基本状态: Running运行态:进程的外部执行条件满足(已获取到运行时需要的资源)且进程已获得CPU,表明该进程正在执行,单处理器系统中(单核)有且只有
阅读全文
摘要:2 Process and Thread Management 进程和线程管理 Tanenbaum的章节标题是进程和线程。我更喜欢加上“管理”这个词。主题是进程、线程、调度、中断处理和IPC(Inter-Process Communication—and Coordination进程间通信和协调)。
阅读全文
摘要:1.8 Operating System Structure 操作系统结构 我必须指出Tanenbaum是所谓的微内核方法的强烈拥护者,在这种方法中,尽可能多地将内核从(管理模式)移到独立的(用户模式)进程中(我推荐他在2016年3月发表的文章)。管理器模式中剩下的(希望是很小的)部分称为微内核。
阅读全文
摘要:1.7 Addendum on Transfer of Control 控制权限的转换 用户进程和操作系统内核之间的控制传递可能非常复杂,特别是在阻塞系统调用、硬件中断和页面错误的情况下(都会产生中断,但区分为Trap和Interrupt)。我们稍后再处理这些问题;这里我们研究一个熟悉的用户模式进程
阅读全文
摘要:1.6 System Calls 系统调用 系统调用是用户在用户态下直接与操作系统交互的机制,即系统向用户提供了一些对系统进行控制的函数,是用户与系统间的桥梁。 当用户执行像read()这样的系统调用时会发生什么? 我知道您不太可能直接使用read(),当您需要读取文件或键盘时,如果您使用C编程,则
阅读全文
摘要:1.5 Operating System Concept 操作系统概念 1.5.0 Processes 进程 进程就是执行中的程序。如果你打开一个程序两次(如计算器)那么就是两个计算器独立的进程。通常,我们将进程的状态或上下文(它的地址空间(大致是它的内存映像)、打开的文件等)与控制线程区分开来。如
阅读全文
摘要:章节1:概述 1.0.0 抽象层次 软件通常在某一层中实现,底层为高层提供支撑。很好理解,Kernel可以通过System Call操作Hardware;Libraries通常是Kernel提供的System Call的带缓冲区的函数封装如:exit和_exit函数;UI是在Libraries和Ke
阅读全文
摘要:章节0:链接器 链接器是操作系统分配中包含的实用程序的示例。与编译器一样,链接器本身不是操作系统的一部分,即它不以主管模式运行。与编译器不同,它依赖于操作系统(使用什么对象/负载文件格式),并且不(固有)源语言依赖。 0.0.1 C语言的编译过程 https://blog.csdn.net/weix
阅读全文