美文网首页
读书笔记-操作系统概念

读书笔记-操作系统概念

作者: 靳晓阳s | 来源:发表于2017-10-29 21:55 被阅读23次

    前言

    当我想要进一步了解PHP,Node.Js这些语言中的线程进程,异步等这些概念时候,总有些雾里看花的感觉,那么干脆就先了解下操作系统相关知识,再去学这些东西。

    导论

    计算机系统组织和体系

    操作系统是管理计算机硬件的程序,它还为应用程序提供基础,并且充当计算机硬件和计算机用户的中介。

    事件的发生通常通过硬件或软件中断(interrupt)来表示。硬件可随时通过系统总线向CPU 发出信号,以触发中断。软件通过执行特别操作如系统调用(system call) (也称为监视器调用(monitor call) )也能触发中断。

    中断是计算机结构的重要部分。当CPU 中断时,它暂停正在做的事并立即转到固定的位置继续执行。该固定位置通常是断服务程序开始位置的地址。中断服务程序开始执行,在执行完后, CPU 重新执行被中断的计算。

    操作系统结构

    操作系统最重要的一点是要有多道程序处理能力。单个用户通常不能总是使得CPU 和I/O 设备都忙。多道程序设计通过组织作业(编码或数据)使CPU 总有一个作业可执行,从而提高了CPU 的利用率。

    这种思想如下:操作系统同时将多个任务保存在内存中(见图1.7)。该作业集可以是作业池中作业集的子集(作业池中包括所有进入系统的作业) ,这是因为可同时保存在内存中的作业数要比可在作业池中的作业数少。操作系统选择一个位于内存中的作业并开始执行。最终,该作业可能必须等待另一个任务如I/O 操作的完成。对于非多道程序系统, CPU就会空闲:对于多道程序系统, CPU 会简单地切换到另一个作业并执行。当该作业需要等待时, CPU 会切换到另一个作业。最后,第一个作业完成等待且重新获得CPU。只要有一个任务可以执行, CPU 就决不会空闲。

    多道程序系统提供了一个可以充分使用各种系统资源(如CPU 、内存、外设)的环境,但是它们没有提供与计算机系统直接交互的能力。分时系统(或多任务)是多道程序设计的延伸。在分时系统中,虽然CPU 还是通过在作业之间的切换来执行多个作业,但是由于切换频率很高,用户可以在程序运行期间与之进行交互。

    操作系统操作

    双重模式操作

    系统引导时,硬件开始处于内核模式。接着,装入操作系统,开始在用户模式下执行用户进程。一旦出现陷阱或中断,硬件会从用户模式切换到内核模式(即将模式位设为0) 。因此,只要操作系统获得了对计算机的控制,它就处于内核模式。系统在将控制交还给用户程序时会切换到用户模式(将模式位设为1)。

    双重模式操作提供了保护操作系统和用户程序不受错误用户程序影响的手段。其实现方法为:将能引起损害的机器指令作为特权指令(privileged instruction) 。如果在用户模式下试图执行特权指令,那么硬件并不执行该指令,而是认为该指令非法,并将其以陷阱的形式通知操作系统。

    定时器

    必须确保操作系统能维持对CPU 的控制,也必须防止用户程序陷入死循环或不调用系统服务,井且不将控制权返回到操作系统。

    操作系统在将控制权交给用户之前,应确保设置好定时器以便产生中断。如果定时器产生中断,那么控制权会自动交给操作系统,而操作泵统可以将中断作为致命错误来处理,也可以给予用户程序更多的时间。

    进程管理

    程序在未被CPU 执行之前不会做任何事。处于执行中的程序被称为进程。

    进程需要一定的资源(包括CPU 时间、内存、文件、I/O 设备)以完成其任务。这些资源可以在进程创建时分配给进程,也可以在执行进程时分配给进程。除了在创建时得到各种物理和逻辑资源外,进程还可以接受传输过来的各种初始化数据(输入)。例如,考虑这样一个进程,它的功能是在终端或者屏幕上显示文件状态。该进程会得到一个文件名作为输入,并且执行适当的指令和系统调用以得到和显示终端所需的信息。当进程中止时,操作系统将收回所有可再用的资源。

    需要强调的是,程序本身并不是进程,程序是被动的实体,单线程进程具有一个程序计数器来明确下一个执行的指令。

    进程是系统工作的单元。系统由多个进程组成,其中一些是操作系统进程(执行系统代码),其余的是用户进程(执行用户代码)。所有这些进程可以潜在地并发执行,如通过在单CPU 上采用CPU 复用来实现。

    操作系统结构

    操作系统提供若干服务。最底层,系统调用允许运行程序直接向操作系统发出请求。在高层,命令解释程序或 Shell 提供了一个机制以便用户不必编写程序就能发出请求。

    请求类型随请求级别而变化。系统调用级别提供基本功能,如进程控制、文件和设备管理。由命令解释程序或系统程序来完成的高级别请求需要转换成一些列的系统请求。系统服务可分成许多类型:程序控制、状态请求和I/O请求。

    在定义了系统服务之后,就可以开发操作系统的结构。需要用各种表记录一些信息,这些信息定义了计算机的系统状态和系统的作业状态。

    由于操作系统很大,所以模块化很重要。按一系列或采用微内核来设计系统是比较好的技术。虚拟机概念采用了分层方法,并将操作系统内核和硬件都作为硬件来考虑。

    进程

    进程是执行中的程序。随着进程的执行,它改变状态。进程状态由进程当前活动所定义。每个进程可处于:新的、就绪、运行、等待或终止状态。每个进程在操作系统内通过进程控制块(PCB)来表示。

    当前不执行的进程会放在某个等待队列。操作系统有两种主要队列:I/O 请求队列和就绪队列。就绪队列包括所有准备执行并等待 CPU 的进程。每个进程都有 PCB, PCB链接起来就形成了就绪队列。长期调度通过选择进程来争用 CPU。通常,长期调度会受资源分配考虑,尤其是内存管理的影响。短期调度从就绪队列中选择进程。

    操作系统必须为父进程创建子进程提供一种机制。父进程在继续之前可以等待它的子进程终止,也可以并发执行父进程和子进程。并发执行有许多优点,例如信息共享、提供运算速度、模块化和便利性等。

    操作系统的执行进程可以是独立进程或协作进程。协作进程需要进程间有互相通信的机制。主要有两种形式的通信:共享内存和消息系统。共享内存的方法要求通信进程共享一些变量。进程通过使用这些共享变量来交换信息。对于共享内存系统,主要应用程序员提供通信,操作系统只需要提供共享内存。消息系统方法允许进程交换信息。提供通信的主要责任在于操作系统本身。这两种方法并不互相排斥,能在同一操作系统内同时实现。

    客户机-服务器系统中可能使用:(1)Socket, (2)远程过程调用(RPC) (3)Java远程方法调用(RMI)。 Socket 定义为通信的端点。一对应用程序间的连接由一对 Socket 组成,每端各有一个通信频道。 RPC 是另一种形式的分布通信。 当一个进程调用远程应用的方法时,就是 RPC。

    线程

    线程是进程内的控制流。多线程进程在同一地址空间内包括多个不同的控制流。多线程的优点是对用户响应的改进、进程内的资源共享、经济和利用多处理器体系结构的能力。

    用户线程对程序员来说是可见的,而对内核来说确实未知的。操作系统支持和管理内核线程。通常,用户线程跟内核线程比,创建和管理要更快,因为它不需要内核干预。有三种不同模型将用户和内核线程关联起来:多对一模型将许多用户线程映射到一个内核线程:一对一模型将每个用户线程映射到一个相应的内核线程;多队多模型将多个用户线程在同样数量的内核线程之间切换。

    线程库为应用程序提供了创建和管理线程的API,通常由三种主要的线程库:POSIX、Pthread API、 Windows系统的 Win32 线程以及 Java线程。

    多线程程序为程序员带来了许多挑战,包括系统调用 fork() 和 exec() 的语义。其他事项包括线程取消、信号和特定线程数据。

    CPU调度

    CPU调度的任务就是从就绪队列中选择一个等待进程,并为其分配CPU。CPU由调度程序分配给选中的进程。

    先到服务调度是最简单的调度算法,但是它会让短进程等到非常长的进程。最短作业优先调度是最佳的,它提供了最短的平均等待时间。实现 SJF 调度比较困难,因为预测下一个 CPU 区间的长度有难度。 SJF 算法是通用优先级调用算法的特例。优先级和 SJF 调度会产生饥饿。老化技术可组织饥饿。

    轮转法调度对于分时系统更为合适。 RR 调度让就绪队列的第一个进程使用 CPU 的q个时间单元,这里 q 是时间片。 在 q 时间单元后,如果该进程还没释放 CPU,那么被抢占并放到就绪队列的尾部。 该算法主要问题是选择时间片。如果时间片太大,那么 RR 调度就成了 FCFS 调度; 如果时间片太小,那么因为上下文切换而引起的调度开销就过大。

    FCFS算法是非抢占的,而 RR 算法是抢占的。 SIF 和优先级算法可以是抢占的,也可以是非抢占的。

    多级队列调度算法允许多个不同算法用于各种类型的进程。最为常用的包括使用 RR 调度的前台交互队列,以及使用 FCFS 调度的后台批处理队列。多级反馈队列调度算法允许进程在队列之间迁移。

    总结

    大致看到进程,线程,CPU调度这些之后,对这些的概念更为清晰了一些,在此基础上再去理解 Python中的多进
    程, 单进程的 Node.js, PHP-FPM 感觉又清晰了一些。

    --EOF--

    相关文章

      网友评论

          本文标题:读书笔记-操作系统概念

          本文链接:https://www.haomeiwen.com/subject/jedupxtx.html