admin管理员组

文章数量:1631245

小结:

这几天我阅读了《Operating System Conceptions》 的第三章。

在这一章中,文章详细介绍了进程,说明了它们是如何在操作系统中表示和调度的。并向我们讲解了在操作系统中如何创建和终止一个进程,提及了几个重要的函数如fork()、exec()等。同时重点描述了进程间的通信方式IPC(共享内存方式和消息传递的方式),如何设计进程间的通信程序,举例说明了四个不同的IPC系统。文章最后,作者通过讲解套接字和远程服务来描述在客户机和服务器不同主机之间进程调用和通信的方式。

由于之前在操作系统课程上重点学习过进程,因此学习完本章内容,算是对之前的知识有了巩固和加深印象的作用。不同的是,比如本文中还仔细介绍了创建和终止进程以及进程间通信的程序设计,还有当下主流操作系统实现IPC的方式等,让我有了更多的认识和理解。谈及调用远程服务时,第一反应是通过http协议,把相关信息封装到request消息体里, 提交请求到服务器的servlet中,由服务器解析消息体,调用本地服务将相关信息包装到response返回给客户,但是这样需要花时间写许多http请求代码。不过利用PRC的话,PRC的透明性的优势就体现在这里了,可以使得调用远程服务就像调用本地一样,封装了调用通信的细节,就不用过多的编程啦。

此外这周开学刚上了一节计算机体系结构的课程,课后老师让我们了解超算的相关内容。我查阅了关于超级计算机的资料,把相关的内容好好整理了一些,写了一点总结就一起放在这篇笔记的最后面啦。

 

 

整理与思考:

3.1 Process Concept

 

1)进程状态转换 

 

 

2Process Control Block  

 

操作系统为每个程序配置一个专门的数据结构,称为进程控制块,系统利用PCB来描述进程的基本情况和活动过程。

PCB包含信息:1、进程状态 2、程序计数器 3CPU寄存器 4CPU调度信息 5、内存管理信息 6、计数信息  7I/O状态信息

 

 

3.2 Process Scheduling

 

1Scheduling Queues

在Linux中task_struct结构体即是PCB。PCB是进程的唯一标识,PCB由链表实现(为了动态插入和删除)。

进程创建时,为该进程生成一个PCB;进程终止时,回收PCB。

由当前的状态改变到另外一个状态current->state = new state

 

当进程进入系统时,它们被放入一个就绪队列中,等待在CPU的内核上执行,就绪队列通常以链表的形式存储,一个就绪队列头包含指向列表中第一个PCB的指针,并且每个PCB都包含一个指向准备队列中的下一个PCB的指针字段。等待队列同理。

就绪队列和等待队列:

 

进程调度的一个常见表示是队列图,有两种类型的队列:就绪队列和等待队列。圆圈表示服务于队列的资源,箭头表示进程的状态转移。一个新的进程最初被放在就绪队列中。

一个进程由不同的事件而发生的状态的改变:

 

当进程终止后,它将从所有队列中移除,释放它拥有的资源和PCB

 

2Context Switch

上下文切换(有时也称作进程切换或任务切换)是指 CPU 从一个进程或线程切换到另一个进程或线程。上下文是指某一时间点 CPU 寄存器和程序计数器的内容。寄存器通过对常用值(通常是运算的中间值)的快速访问来提高计算机程序运行的速度。程序计数器是一个专用的寄存器,用于表明指令序列中 CPU 正在执行的位置,存的值为正在执行的指令的位置或者下一个将要被执行的指令的位置,具体依赖于特定的系统。

 

上下文切换的过程:

1)挂起一个进程,将这个进程在 CPU 中的状态(上下文)存储于其PCB

2)在内存中检索下一个进程的上下文并将其在 CPU 的寄存器中恢复

3)跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码行),以恢复该进程。


上下文切换有时被描述为内核挂起 CPU 当前执行的进程,然后继续执行之前挂起的众多进程中的某一个。

 

上下文切换与模式切换:

上下文切换:上下文切换只能发生在内核态中。内核态是 CPU 的一种有特权的模式,在这种模式下只有内核运行并且可以访问所有内存和其他系统资源。其他的程序,如应用程序,在最开始都是运行在用户态,但是他们能通过系统调用来运行部分内核的代码。

 

模式切换:这两种模式(用户态和内核态)在类 Unix 系统中共存意味着当系统调用发生时 CPU 切换到内核态是必要的。这应该叫做模式切换而不是上下文切换,因为没有改变当前的进程。


上下文切换在多任务操作系统中是一个必须的特性。多任务操作系统是指多个进程运行在一个 CPU 中互不打扰,看起来像同时运行一样。这个并行的错觉是由于上下文在高速的切换(每秒几十上百次)。当某一进程释放它的 CPU 时间或者系统分配的时间片用完时,就会发生上下文切换。
 

上下文切换的消耗

本文标签: 第三章操作系统知识Systemoperating