ClarkCheung
操作系统:经典IPC问题
本文将介绍两个经典的同步问题:读者/写者问题和哲学家就餐问题。读者/写者问题读者/写者问题是一类在共享数据访问中产生的问题。在这个问题中,我们有两种类型使用者。一类是只需要读取数据的读者,一类是需要读取和修改数据的写者。对于这个问题,可以有读者优先和写者优先的解决办法。
操作系统:调度
调度当存在多个进程或线程同时竞争CPU的时候,CPU需要选择下一个运行的进程或线程。在操作系统中,完成选择工作的部分称作调度程序,该程序使用的算法称为调度算法。调度的原则 我们什么时候需要调度?怎样的调度算法是好的调度算法?例如交互式程序会存在需要CPU处理的工作和I/O,在出现...
操作系统:进程间通信
竞态条件进程常常需要与其他进程通信。例如,排队系统中,每个用户进程可能需要跟系统进程通信来得知他们的位置。而进程的并发执行可能会带来一些问题。例如,有两个进程并行执行下列语句:new_pid = next_pid++; 如果next_pid = 100,那么其中一个进程的得到的p...
操作系统:信号量、互斥量、管程
信号量:在1965年,Dijkstra提出用一个整型变量来累计唤醒次数,称作信号量。一个信号量的取值可以为0或者为正值。Dijkstra建议对信号量设立两种操作:down(P操作)和up(V操作)。这两种操作均为原子操作,意为在该信号量操作结束或阻塞之前,其余进程均不允许访问该信号量。
操作系统:线程
什么是线程?我们为什么要使用线程?概念上讲,线程与进程比较类似,可以说,线程就是进程中的一条执行流程。对于每个进程下的多个线程,我们可以把它们想象成共享同一个地址空间的多个轻量级进程。这也是我们使用线程的最重要的原因:我们需要一种共享同一个地址空间和可用数据的并行实体。
操作系统:进程
进程为了将一个CPU变成多个虚拟的CPU来实现(伪)并行,或者说为CPU提供一种描述(伪)并行的抽象,操作系统的设计者开发了进程(process)。进程是“一个具有独立功能的程序在一个数据集合上的一次动态执行过程”,或者简单说,是一个正在执行程序的实例。