操作系统_系统盘操作 - CSDN
操作系统 订阅
操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 展开全文
操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
信息
英文简称
OS
常见系统
Windows,macOS,Linux,iOS,Android
外文名
operating system
体系结构
模块组合结构、层次结构、微内核结构
组成部分
内核、驱动程序、接口库、外围
中文名
操作系统
功    能
处理器管理、存储器管理、设备管理、文件管理
基本类型
批处理系统、分时操作系统、实时操作系统
特    征
并发、共享、虚拟、异步
操作系统简介
在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。 [1] 
收起全文
  • 《从零开发操作系统:从加电自检到内核引导》 主讲:丁宋涛 如果你想自己写一个小的操作系统,一定会发现无从下手,因为在传统的学历教育中,操作系统课程过于关注理论,不会告诉你要用什么工具, 什么语言,...
  • 原文地址操作系统基本特征1. 并发并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令。并行需要硬件支持,如多流水线或者多处理器。操作系统通过引入进程和线程,使得程序能够...

    我是技术搬运工,好东西当然要和大家分享啦.原文地址

    操作系统基本特征

    1. 并发

    并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令。

    并行需要硬件支持,如多流水线或者多处理器。

    操作系统通过引入进程和线程,使得程序能够并发运行。

    2. 共享

    共享是指系统中的资源可以供多个并发的进程共同使用。

    有两种共享方式:互斥共享和同时共享。

    互斥共享的资源称为临界资源,例如打印机等,在同一时间只允许一个进程访问,否则会出现错误,需要用同步机制来实现对临界资源的访问。

    3. 虚拟

    虚拟技术把一个物理实体转换为多个逻辑实体。主要有两种虚拟技术:时分复用技术和空分复用技术,例如多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换,这样就好像有多个处理器进行处理。

    4. 异步

    异步是指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。

    系统调用

    如果一个进程在用户态需要用到操作系统的一些功能,就需要使用系统调用从而陷入内核,由操作系统代为完成。

    可以由系统调用请求的功能有设备管理、文件管理、进程管理、进程通信、存储器管理等。

    中断分类

    1. 外中断

    由 CPU 执行指令以外的事件引起,如 I/O 结束中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。

    2. 异常

    由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。

    3. 陷入

    在用户程序中使用系统调用。

    大内核和微内核

    1. 大内核

    大内核是将操作系统功能作为一个紧密结合的整体放到内核,由于各模块共享信息,因此有很高的性能。

    2. 微内核

    由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。但是需要频繁地在用户态和核心态之间进行切换,会有一定的性能损失。

    第二章 进程管理

    进程与线程

    1. 进程

    进程是操作系统进行资源分配的基本单位。

    进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。

    2. 线程

    一个线程中可以有多个线程,是独立调度的基本单位。同一个进程中的多个线程之间可以并发执行,它们共享进程资源。

    3. 区别

    ① 拥有资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问率属进程的资源。

    ② 调度:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。

    ③ 系统开销:由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,因此操作系统所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置。而线程切换时只需保存和设置少量寄存器内容,开销很小。此外,由于同一进程内的多个线程共享进程的地址空间,因此,这些线程之间的同步与通信非常容易实现,甚至无需操作系统的干预。

    ④ 通信方面:进程间通信 (IPC) 需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以通过直接读/写进程数据段(如全局变量)来进行通信。

    举例:QQ 和 浏览器是两个进程,浏览器进程里面有很多线程,例如 http 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 http 请求时,浏览器还可以响应用户的其它事件。

    进程状态的切换

    阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括 CPU,缺少 CPU 会让进程从运行态转换为就绪态。

    只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态;而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状态,等待下一次调度。

    调度算法

    需要针对不同环境来讨论调度算法。

    1. 批处理系统中的调度

    1.1 先来先服务(FCFS)

    first-come first-serverd。

    调度最先进入就绪队列的作业。

    有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。

    1.2 短作业优先(SJF)

    shortest job first。

    调度估计运行时间最短的作业。

    长作业有可能会饿死,处于一直等待短作业执行完毕的状态。如果一直有短作业到来,那么长作业永远得不到调度。

    1.3 最短剩余时间优先(SRTN)

    shortest remaining time next。

    2. 交互式系统中的调度

    2.1 优先权优先

    除了可以手动赋予优先权之外,还可以把响应比作为优先权,这种调度方式叫做高响应比优先调度算法。

    响应比 = (等待时间 + 要求服务时间) / 要求服务时间 = 响应时间 / 要求服务时间

    这种调度算法主要是为了解决 SJF 中长作业可能会饿死的问题,因为随着等待时间的增长,响应比也会越来越高。

    2.2 时间片轮转

    将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 分配给队首的进程。

    时间片轮转算法的效率和时间片有很大关系。因为每次进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太短,进程切换太频繁,在进程切换上就会花过多时间。

    2.3 多级反馈队列

    ① 设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权越高的队列中,为每个进程所规定的执行时间片就越小。

    ② 当一个新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入下一个队列的队尾。

    ③ 仅当前 i -1 个队列均空时,才会调度第 i 队列中的进程运行。

    优点:实时性好,也适合运行短作业和长作业。

    2.4 短进程优先

    3. 实时系统中的调度

    实时系统要一个服务请求在一个确定时间内得到响应。

    分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。

    进程同步

    1. 临界区

    对临界资源进行访问的那段代码称为临界区。

    为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查。

    // entry section
    // critical section;
    // exit section

    2. 同步与互斥

    同步指多个进程按一定顺序执行;互斥指多个进程在同一时刻只有一个进程能进入临界区。

    同步是在对临界区互斥访问的基础上,通过其它机制来实现有序访问的。

    3. 信号量

    **信号量(Samaphore)**是一个整型变量,可以对其执行 down 和 up 操作,也就是常见的 P 和 V 操作。

    • down : 如果信号量大于 0 ,执行 - 1 操作;如果信号量等于 0,将进程睡眠,等待信号量大于 0;
    • up:对信号量执行 + 1 操作,并且唤醒睡眠的进程,让进程完成 down 操作。

    down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断。

    如果信号量的取值只能为 0 或者 1,那么就成为了互斥量(Mutex),0 表示临界区已经加锁,1 表示临界区解锁。

    typedef int samaphore;
    samaphore mutex = 1;
    void P1() {
        down(mutex);
        // 临界区
        up(mutex);
    }
    
    void P2() {
        down(mutex);
        // 临界区
        up(mutex);
    }

    使用信号量实现生产者-消费者问题

    使用一个互斥量 mutex 来对临界资源进行访问;empty 记录空缓冲区的数量,full 记录满缓冲区的数量。

    注意,必须先执行 down 操作再用互斥量对临界区加锁,否则会出现死锁。如果都先对临界区加锁,然后再执行 down 操作,考虑这种情况:生产者对临界区加锁后,执行 down(empty) 操作,发现 empty = 0,此时生成者睡眠。消费者此时不能进入临界区,因为生产者对临界区加锁了,也就无法对执行 up(empty) 操作,那么生产者和消费者就会一直等待下去。

    #define N 100
    typedef int samaphore;
    samaphore mutex = 1;
    samaphore empty = N;
    samaphore full = 0;
    
    void producer() {
        while(TRUE){
            int item = produce_item;
            down(empty);
            down(mutex);
            insert_item(item);
            up(mutex);
            up(full);
        }
    }
    
    void consumer() {
        while(TRUE){
            down(full);
            down(mutex);
            int item = remove_item(item);
            up(mutex);
            up(empty);
            consume_item(item);
        }
    }

    4. 管程

    使用信号量机制实现的生产者消费者问题需要客户端代码做很多控制,而管程把控制的代码独立出来,不仅不容易出错,也使得客户端代码调用更容易。

    c 语言不支持管程,下面的示例代码使用了类 Pascal 语言来描述管程。示例代码中的管程提供了 insert() 和 remove() 方法,客户端代码通过调用这两个方法来解决生产者-消费者问题。

    monitor ProducerConsumer
        integer i;
        condition c;
        
        procedure insert();
        begin
        
        end;
        
        procedure remove();
        begin
        
        end;
    end monitor;

    管程有一个重要特性:在一个时刻只能有一个进程使用管程。进程在无法继续执行的时候不能一直占用管程,必须将进程阻塞,否者其它进程永远不能使用管程。

    管程引入了 条件变量 以及相关的操作:wait()signal() 来实现同步操作。对条件变量执行 wait() 操作会导致调用进程阻塞,把管程让出来让另一个进程持有。signal() 操作用于唤醒被阻塞的进程。

    使用管程实现生成者-消费者问题

    monitor ProducerConsumer
        condition full, empty;
        integer count := 0;
        condition c;
    
        procedure insert(item: integer);
        begin
            if count = N then wait(full);
            insert_item(item);
            count := count + 1;
            if count = 1 ten signal(empty);
        end;
    
        function remove: integer;
        begin
            if count = 0 then wait(empty);
            remove = remove_item;
            count := count - 1;
            if count = N -1 then signal(full);
        end;
    end monitor;
    
    procedure producer
    begin
        while true do
        begin
            item = produce_item;
            ProducerConsumer.insert(item);
        end
    end;
    
    procedure consumer
    begin
        while true do
        begin
            item = ProducerConsumer.remove;
            consume_item(item);
        end
    end;

    进程通信

    进程通信可以看成是不同进程间的线程通信,对于同一个进程内线程的通信方式,主要使用信号量、条件变量等同步机制。

    1. 管道

    管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。写进程在管道的尾端写入数据,读进程在管道的首端读出数据。数据读出后将从管道中移走,其它读进程都不能再读到这些数据。

    管道提供了简单的流控制机制,进程试图读空管道时,在有数据写入管道前,进程将一直阻塞。同样地,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞。

    Linux 中管道是通过空文件来实现。

    管道有三种:

    ① 普通管道:有两个限制:一是只支持半双工通信方式,即只能单向传输;二是只能在父子进程之间使用;

    ② 流管道:去除第一个限制,支持双向传输;

    ③ 命名管道:去除第二个限制,可以在不相关进程之间进行通信。

    2. 信号量

    信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其它进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

    3. 消息队列

    消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

    4. 信号

    信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

    5. 共享内存

    共享内存就是映射一段能被其它进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其它进程间通信方式运行效率低而专门设计的。它往往与其它通信机制(如信号量)配合使用,来实现进程间的同步和通信。

    6. 套接字

    套接字也是一种进程间通信机制,与其它通信机制不同的是,它可用于不同机器间的进程通信。

    经典同步问题

    生产者和消费者问题前面已经讨论过。

    1. 读者-写者问题

    允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写操作同时发生。

    一个整型变量 count 记录在对数据进行读操作的进程数量,一个互斥量 count_mutex 用于对 count 加锁,一个互斥量 data_mutex 用于对读写的数据加锁。

    typedef int semaphore;
    semaphore count_mutex = 1;
    semaphore data_mutex = 1;
    int count = 0;
    
    void reader() {
        while(TRUE) {
            down(count_mutex);
            count++;
            if(count == 1) down(data_mutex); // 第一个读者需要对数据进行加锁,防止写进程访问
            up(count_mutex);
            read();
            down(count_mutex);
            count--;
            if(count == 0) up(data_mutex);
            up(count_mutex);
        }
    }
    
    void writer() {
        while(TRUE) {
            down(data_mutex);
            write();
            up(data_mutex);
        }
    }

    2. 哲学家进餐问题

    五个哲学家围着一张圆周,每个哲学家面前放着饭。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先一根一根拿起左右两边的筷子。

    下面是一种错误的解法,考虑到如果每个哲学家同时拿起左手边的筷子,那么就无法拿起右手边的筷子,造成死锁。

    #define N 5
    #define LEFT (i + N - 1) % N
    #define RIGHT (i + N) % N
    typedef int semaphore;
    semaphore chopstick[N];
    
    void philosopher(int i) {
        while(TURE){
            think();
            down(chopstick[LEFT[i]]);
            down(chopstick[RIGHT[i]]);
            eat();
            up(chopstick[RIGHT[i]]);
            up(chopstick[LEFT[i]]);
        }
    }

    为了防止死锁的发生,可以加一点限制,只允许同时拿起左右两边的筷子,方法是引入一个互斥量,对拿起两个筷子的那段代码加锁。

    semaphore mutex = 1;
    
    void philosopher(int i) {
        while(TURE){
            think();
            down(mutex);
            down(chopstick[LEFT[i]]);
            down(chopstick[RIGHT[i]]);
            up(mutex);
            eat();
            down(mutex);
            up(chopstick[RIGHT[i]]);
            up(chopstick[LEFT[i]]);
            up(mutex);
        }
    }

    第三章 死锁

    死锁的条件

    1. 互斥
    2. 请求与保持:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    3. 不可抢占
    4. 环路等待

    死锁的处理方法

    1. 鸵鸟策略

    把头埋在沙子里,假装根本没发生问题。

    这种策略不可取。

    2. 死锁预防

    在程序运行之前预防发生死锁。

    2.1 破坏互斥条件

    例如假脱机打印机技术允许若干个进程同时输出,唯一真正请求物理打印机的进程是打印机守护进程。

    2.2 破坏请求与保持条件

    一种实现方式是规定所有进程在开始执行前请求所需要的全部资源。

    2.3 破坏不可抢占条件

    2.4 破坏环路等待

    给资源统一编号,进程只能按编号顺序来请求资源。

    3. 死锁避免

    在程序运行时避免发生死锁。

    3.1 安全状态

    图 a 的第二列 has 表示已拥有的资源数,第三列 max 表示总共需要的资源数,free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源,运行结束后释放 B,此时 free 变为 4;接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。

    定义:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。

    3.2 单个资源的银行家算法

    一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。

    上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。

    3.3 多个资源的银行家算法

    上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。

    检查一个状态是否安全的算法如下:

    ① 查找右边的矩阵是否存在一行小于等于向量 A。如果不存在这样的行,那么系统将会发生死锁,状态是不安全的。

    ② 假若找到这样一行,将该进程标记为终止,并将其已分配资源加到 A 中。

    ③ 重复以上两步,直到所有进程都标记为终止,则状态时安全的。

    4. 死锁检测与死锁恢复

    不试图组织死锁,而是当检测到死锁发生时,采取措施进行恢复。

    4.1 死锁检测算法

    死锁检测的基本思想是,如果一个进程所请求的资源能够被满足,那么就让它执行,释放它拥有的所有资源,然后让其它能满足条件的进程执行。

    上图中,有三个进程四个资源,每个数据代表的含义如下:

    E 向量:资源总量A 向量:资源剩余量C 矩阵:每个进程所拥有的资源数量,每一行都代表一个进程拥有资源的数量R 矩阵:每个进程请求的资源数量

    进程 P1 和 P2 所请求的资源都得不到满足,只有进程 P3 可以,让 P3 执行,之后释放 P3 拥有的资源,此时 A = (2 2 2 0)。P1 可以执行,执行后释放 P1 拥有的资源, A = (4 2 2 2) ,P2 也可以执行。所有进程都可以顺利执行,没有死锁。

    算法总结如下:

    每个进程最开始时都不被标记,执行过程有可能被标记。当算法结束时,任何没有被标记的进程都是死锁进程。

    ① 寻找一个没有标记的进程 Pi,它所请求的资源小于等于 A。② 如果找到了这样一个进程,那么将 C 矩阵的第 i 行向量加到 A 中,标记该进程,并转回 ①。③ 如果有没有这样一个进程,算法终止。

    4.2 死锁恢复

    ① 利用抢占恢复② 杀死进程

    第四章 存储器管理

    虚拟内存

    每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一 页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。

    当程序引用到一部分在物理内存中的地址空间时,由硬件立即执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。

    分页与分段

    1. 分页

    用户程序的地址空间被划分为若干固定大小的区域,称为“页”。相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配,由一个页表来维护它们之间的映射关系。

    2. 分段

    上图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态递增的特点会导致覆盖问题的出现。

    分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,可以动态改变。

    每个段都需要程序员来划分。

    3. 段页式

    用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。

    用分页方法来分配和管理实存。即把整个主存分成与上述页大小相等的存储块,可装入作业的任何一页。程序对内存的调入或调出是按页进行的。但它又可按段实现共享和保护。

    4. 分页与分段区别

    ① 对程序员的透明性:分页透明,但是分段需要程序员显示划分每个段。

    ② 地址空间的维度:分页是一维地址空间,分段是二维的。

    ③ 大小是否可以改变:页的大小不可变,段的大小可以动态改变。

    ④ 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护。

    页面置换算法

    在程序运行过程中,若其所要访问的页面不在内存而需要把它们调入内存,但是内存已无空闲空间时,系统必须从内存中调出一个页面到磁盘对换区中,并且将程序所需要的页面调入内存中。页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。

    1. 最佳(Optimal)

    所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。

    是一种理论上的算法,因为无法知道一个页面多长时间会被再访问到。

    举例:一个系统为某进程分配了三个物理块,并有如下页面引用序列:

    7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

    进程运行时,先将 7,0,1 三个页面装入内存。当进程要访问页面 2 时,产生缺页中断,会将页面 7 换出,因为页面 7 再次被访问的时间最长。

    2. 先进先出(FIFO)

    所选择换出的页面是最先进入的页面。

    该算法会将那些经常被访问的页面也被换出,从而使缺页率升高。

    3. 最近最久未使用(LRU, Least Recently Used)

    虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。

    可以用栈来实现该算法,栈中存储页面的页面号。当进程访问一个页面时,将该页面的页面号从栈移除,并将它压入栈顶,这样,最近被访问的页面的页面号总是在栈顶,而最近最久未使用的页面的页面号总是在栈底。

    4,7,0,7,1,0,1,2,1,2,6

    4. 时钟(Clock)

    Clock 页面置换算法需要用到一个访问位,当一个页面被访问时,将访问为置为 1。

    首先,将内存中的所有页面链接成一个循环队列,当缺页中断发生时,检查当前指针所指向页面的访问位,如果访问位为 0,就将该页面换出;否则将该页的访问位设置为 0,给该页面第二次的机会,移动指针继续检查。

    第五章 设备管理

    磁盘调度算法

    当多个进程同时请求访问磁盘时,需要进行磁盘调度来控制对磁盘的访问。磁盘调度的主要目标是使磁盘的平均寻道时间最少。

    1. 先来先服务(FCFS, First Come First Serverd)

    根据进程请求访问磁盘的先后次序来进行调度。优点是公平和简单,缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。

    2. 最短寻道时间优先(SSTF, Shortest Seek Time First)

    要求访问的磁道与当前磁头所在磁道距离最近的优先进行调度。这种算法并不能保证平均寻道时间最短,但是比 FCFS 好很多。

    3. 扫描算法(SCAN)

    SSTF 会出现进行饥饿现象。考虑以下情况,新进程请求访问的磁道与磁头所在磁道的距离总是比一个在等待的进程来的近,那么等待的进程会一直等待下去。

    SCAN 算法在 SSTF 算法之上考虑了磁头的移动方向,要求所请求访问的磁道在磁头当前移动方向上才能够得到调度。因为考虑了移动方向,那么一个进程请求访问的磁道一定会得到调度。

    当一个磁头自里向外移动时,移到最外侧会改变移动方向为自外向里,这种移动的规律类似于电梯的运行,因此又常称 SCAN 算法为电梯调度算法。

    4. 循环扫描算法(CSCAN)

    CSCAN 对 SCAN 进行了改动,要求磁头始终沿着一个方向移动。

    参考资料

    • Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hall Press, 2014.

    • 汤子瀛, 哲凤屏, 汤小丹. 计算机操作系统[M]. 西安电子科技大学出版社, 2001.

    • Bryant, R. E., & O’Hallaron, D. R. (2004). 深入理解计算机系统.

    • 小土刀的面试刷题笔记

    • 进程间的几种通信方式

    展开全文
  • 计算机操作系统是计算机专业必修的专业基础课程,是考研的必考科目。它的特点是概念多、较抽象和涉及面广,所以无论是大学学习还是考研,很多同学都把它当做一块硬骨头,其实只要我们掌握正确的学习方法,操作系统...
  • 操作系统 操作系统概述 操作系统作用 存储管理 处理机管理 设备管理 文件管理 用户接口 操作系统的定义 是管理和控制计算机系统中各种硬件和软件资源、合理地组织计算机工作流程的...

    操作系统

    操作系统概述

    操作系统作用

    1. 存储管理

    这里写图片描述
    2. 处理机管理
    这里写图片描述
    3. 设备管理
    这里写图片描述
    4. 文件管理
    这里写图片描述
    5. 用户接口
    这里写图片描述

    操作系统的定义

    是管理和控制计算机系统中各种硬件和软件资源、合理地组织计算机工作流程的系统软件,是用户与计算机之间的接口。

    • 多道批处理系统
    1. 在内存中同时存放多道程序,在管理程序的控制下交替执行,这些作业共享CPU和系统其他资源。
      
    2. ![这里写图片描述](https://img-blog.csdn.net/20180611133851521)
      
    3. 这里写图片描述
    • 分时系统

    把处理机运行时间分成时间片,按时间片轮转的方式,把处理机分配给各联机作业使用。允许多个用户与计算机直接交互。

    • 实时系统

    系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。提供即时响应和高可靠性,响应时间快,可以在毫秒级甚至微秒级立即处理。

    操作系统的特征

    1. 并发

      并发是指两个或多个事件在同一时间间隔内发生。

      微观上还是程序在分时地交替执行。

    2. 共享

      共享是指系统中的资源可供内存中多个并发执行的进程共同使用。

      1. 互斥共享方式

        如打印机、磁带机。在一段时间内只允许一个进程访问该资源。

      2. 同时访问方式

        如磁盘设备

    3. 虚拟

      虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。比如说虚拟处理器,虚拟内存,虚拟外部设备

    4. 异步

      在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

    操作系统最基本的特征是并发和共享,两者互为存在条件。

    进程管理

    程序基本概念

    • 程序执行的两种方式:
      1. 顺序执行:一个计算的若干操作必须按照严格的先后次序顺序地执行,这类计算过程就是程序的顺序执行过程。
      2. 并发执行:指一组在逻辑上相互独立的程序或程序段在执行过程中,其执行时间在客观上相互重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。

    进程基本概念

    • 定义

    进程是指一个具有独立功能的程序对某个数据集在处理机上的执行过程和分配资源的基本单位。

    引入进程的概念,以便更好地描述和控制程序的并发执行。

    程序封闭性是指进程执行的结果只取决于进程本身,不会受外界影响。

    • 进程和程序的区别

    这里写图片描述

    • 进程的组成

    进程通常由程序、数据集合和进程控制块PCB三部分组成。程序和它操作的数据是进程存在的静态实体,而专门的数据结构PCB用来描述进程当前的状态、本身的特性等。

    当进程被中断时,操作系统会把程序计数器和处理器寄存器(上下文数据)保存在PCB中的对应位置,进程状态已被改变为其他的值,例如阻塞态或就绪态。

    PCB是进程存在的唯一标志。故操作系统是根据进程控制块来对并发执行的进程进行控制和管理。

    PCB内含的数据结构主要有:进程标志信息、进程控制信息、进程资源信息、CPU现场信息。

    每个进程包含独立的地址空间,进程各自的地址空间是私有的,只有执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误。

    对进程的管理和控制功能是通过执行各种原语实现的,如创建原语。

    进程状态

    • 运行态
    • 就绪态
    • 阻塞态
    • 新建态
    • 退出态

    进程创建

    1、给新进程分配一个唯一的进程标识符

    2、给进程分配空间

    3、初始化进程控制块

    4、设置正确的连接

    5、创建或扩充其他数据结构

    线程

    线程基本概念

    引入线程,是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

    线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元。

    线程共享进程拥有的全部资源。

    线程不拥有系统资源,但是它可以访问进程所拥有的系统资源。

    线程没有自己独立的地址空间,他共享他所属的进程的空间。

    线程的实现方式

    1. 用户级线程
    2. 内核级线程

    进程间通信

    • 共享存储
    • 消息传递
    • 管道通信:固定大小,半双工通信,即某一时刻只能单向传输。
    • 共享文件

    处理机调度

    调度的层次

    1. 作业调度,又称高级调度。就是内存与辅存之间的调度。
    2. 中级调度。又称内存调度。引入中级调度是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当他们具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存。
    3. 进程调度。又称为低级调度。按照某种方法和策略从就绪队列中选取一个进程给CPU。

    进程调度方式

    1. 非剥夺调度方式
    2. 剥夺调度方式

    典型的调度算法

    1. 先来先服务调度算法(FCFS)

    2. 短作业优先(SJF)调度算法

      从后备队列中选择一个或若干个估计运行时间最短的作业,将他们调入内存运行。

    3. 短进程优先(SPF)调度算法

      从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行。

    4. 优先级调度算法

      根据能否抢占进程,可将调度算法分为:

      1. 非剥夺式优先级调度算法
      2. 剥夺式优先级调度算法

      根据进程创建后其优先级是否可以改变,分为:

      1. 静态优先级。优先级在创建进程时确定,且在进程的整个运行期间保持不变。
      2. 动态优先级。可动态调整优先级。
    5. 高响应比优先调度算法

      这里写图片描述

    6. 时间片轮转调度算法

    7. 多级反馈队列调度算法

    这里写图片描述

    这里写图片描述

    进程同步

    基本概念

    1. 临界资源

    我们把一次仅允许一个进程使用的资源称为临界资源。

    1. 同步

    同步亦称直接制约关系,他是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。

    实现临界区互斥的基本方法

    软件实现方法

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    硬件实现方法

    1. 中断屏蔽方法

      当一个进程正在使用处理机执行它的临界区代码时,要防止其他进程再进入其临界区访问的最简单方法是禁止一切中断发生。因为CPU只在中断发生时进行进程切换,这样屏蔽中断就能保证当前运行进程将临界区代码顺利地执行完。

    2. 硬件指令方法

      这里写图片描述

      这里写图片描述

    信号量

    信号量只能被两个标准的原语wait(S)和signal(S)来访问,也可以记为“P操作“和”V操作“。

    原语是指完成某种功能且不被分割不被中断执行的操作序列,通常可由硬件来实现完成不被分割执行特性的功能。

    1. 利用信号量实现同步

    这里写图片描述

    1. 利用信号量实现进程互斥

    这里写图片描述

    管程

    管程是由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程。

    这里写图片描述

    死锁

    所谓死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。

    死锁产生的条件

    • 互斥
    • 不剥夺
    • 请求和保持
    • 循坏等待

    死锁的处理策略

    1. 预防死锁

    设置某些限制条件,破坏产生死锁的四个必要条件中的一个或几个,以防止发生死锁。

    1. 避免死锁

    在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。

    银行家算法

    这里写图片描述

    1. 死锁的检测及解除

    通过系统的检测机构及时地检测出死锁的发生,然后采取某种措施解除死锁。

    这里写图片描述

    内存管理

    程序执行过程

    这里写图片描述

    逻辑地址空间与物理地址空间

    这里写图片描述

    覆盖与交换

    • 覆盖

    这里写图片描述

    • 交换

    这里写图片描述

    连续分配管理方式

    • 单一连续分配

    这里写图片描述

    • 固定分区分配

    可以有大小相等的分区和大小不等的分区

    会有内部碎片

    • 动态分区分配

    会有外部碎片,可以通过紧凑技术来解决(就是操作系统不时地对进程进行移动和整理,需要动态重定位寄存器支持。

    这里写图片描述

    非连续分配管理方式

    • 分页存储管理
    • 分段存储管理
    • 段页式管理方式

    虚拟内存管理

    1. 传统存储管理方式的特征
    • 一次性:作业必须一次性全部装入内存,方能运行。
    • 驻留性:作业被装入内存后,就一直驻留在内存中,其任何部分都不会被换出,直至作业运行结束。
    1. 局部性原理

      • 时间局部性

      如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。

      所以时间局部性是通过将进来使用的指令和数据保存到高速缓存存储器中。

      • 空间局部性

      一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问。

      所以空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。

    页面置换算法

    1. 最佳置换算法(OPT)

    这里写图片描述

    1. 先进先出页面置换算法

    这里写图片描述

    1. 最近最久未使用置换算法(LRU)

    这里写图片描述

    文件系统

    文件的概念

    文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等。

    在用户进行的输入、输出中,是以文件为基本单位。

    文件的属性

    1. 名称
    2. 标识符
    3. 类型
    4. 位置
    5. 大小
    6. 保护
    7. 时间、日期和用户标识

    文件的逻辑结构

    1. 无结构文件(流式文件)

    无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累保存,他是有序相关信息项的集合,以字节为单位。

    1. 有结构文件(记录式文件)

      1. 顺序文件

      文件中的记录一个接一个地顺序排列,记录通常是定长的,可以顺序存储或以链表形式存储。

      ​ 1. 串结构

      ​ 记录之间的顺序与关键字无关,通常按照存入时间的先后排列。

      ​ 2. 顺序结构

      ​ 指文件中的所有记录按关键字顺序排列。

      1. 索引文件

      2. 索引顺序文件是顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中的所有记录分为若干组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项。

      3. 直接文件或散列文件

        给定记录的键值或通过Hash函数转换的键值直接决定记录的物理地址。

    目录结构

    文件控制块和索引

    1. 文件控制块。FCB用来存放控制文件所需要的各种信息的数据结构。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。

      FCB主要包含以下信息:

      1. 基本信息
      2. 存取控制信息
      3. 使用信息
    2. 索引节点

    目录结构

    1. 单级目录结构。整个文件系统中只建立一张目录表,每个文件占一个目录项。
    2. 两级目录结构。将文件目录分为主文件目录和用户文件目录。主文件目录项记录用户名及相应用户文件目录所在的存储位置。用户文件目录项记录该用户文件的FCB信息。
    3. 多级目录结构
    4. 无环图目录结构。引入改种目录结构是为了实现文件共享。

    文件共享

    1. 基于索引结点(硬连接):共享文件指向同一个索引结点
    2. 基于符号链(软连接):保存共享文件的路径名

    文件保护

    1. 口令保护:通过口令访问文件
    2. 加密保护:对文件进行加密处理
    3. 访问控制:根据访问者的身份进行限制

    文件系统层次结构

    文件系统类型:FAT32、NTFS、ext2、ext3、ext4

    这里写图片描述

    目录实现

    1. 线性列表
    2. 哈希表

    文件实现

    1. 文件分配方式
      1. 连续分配
      2. 链接分配
      3. 索引分配

    这里写图片描述

    文件存储器的空间管理

    1. 空闲表法:把所有空闲块组织成表
    2. 空闲链表法:把所有空闲块组织成链表
    3. 位示图:利用二进制的每位记录空闲块
    4. 成组链接:空闲表和空闲链表的结合,适合大的文件系统

    磁盘调度算法

    1. FCFS(先来先服务算法)

    这里写图片描述

    1. 最短寻找时间优先算法(SSTF)算法

    这里写图片描述

    1. 扫描(SCAN)算法(又称电梯算法)

    这里写图片描述

    1. 循环扫描(C-SCAN)算法

    这里写图片描述

    这里写图片描述

    这里写图片描述

    I/O管理

    I/O控制方式

    1. 程序直接控制方式

    2. 中断驱动方式

      允许I/O设备主动打断CPU的允许并请求服务,从而“解放”CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作。

    3. DMA方式

      DMA方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放”CPU。DMA方式的特点:

      1. 基本单位是数据块
      2. 所传送的数据,是从设备直接送入内存的,或者相反
      3. 仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在DMA控制器的控制下完成的。

      这里写图片描述

    4. 通道控制方式

    这里写图片描述

    这里写图片描述

    这里写图片描述

    展开全文
  • 操作系统简介

    2016-10-27 21:31:51
    操作系统 - 计算机管理控制程序 操作系统(Operating System,简称OS)是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责管理与配置...

    操作系统 - 计算机管理控制程序

    操作系统(Operating System,简称OS)是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。操作系统的种类很多,各种设备安装的操作系统可从简单到复杂,可从手机的嵌入式操作系统到超级计算机的大型操作系统。目前流行的现代操作系统主要有AndroidBSDiOSLinuxMac OS XWindowsWindows Phonez/OS等,除了Windowsz/OS等少数操作系统,大部分操作系统都为类Unix操作系统。

    组成部分:内核、驱动程序、接口库、外围

     

    计算机操作系统的发展经历了两个阶段。第一个阶段为单用户、单任务的操作系统  CP/M操作系统之后,还出现了C-DOSM-DOSTRS-DOSS-DOSMS-DOS等磁盘操作系统。

    计算机操作系统发展的第二个阶段是多用户多道作业和分时系统。其典型代表有UNIXXENIXOS/2以及Windows操作系统

    分类方法

    一·应用领域可分为

    桌面操作系统(如Windows系统、Unix、MAC、Linux

    服务器操作系统(如Windows系统Windows Service 2003/Windows service 2008 等Netware:Novel的3.113.124.105.0UnixlSCO SVRBSD UnixSUN SolarisIBM-AIXHP-UFreeBSDX Linux

    嵌入式操作系统(嵌入式Linux,uclinux,ucos2VxWorksWindows Embedded以及应用在智能手机和平板电脑的AndroidiOS

     

    二·所支持用户数可分为

    单用户操作系统(MSDOS、OS/2.Windows)、多用户操作系统(UNIX、Linux、MVS)

     

    三·源码开放程度可分为

    开源操作系统(Linux、FreeBSD)和闭源操作系统(Mac OS X、Windows)

     

    四·硬件结构可分为

    网络操作系统(Netware、Windows NT、OS/2 warp)、多媒体操作系统(Amiga)、和分布式操作系统等;

     

    五·操作系统环境可分为

    批处理操作系统(MVX、DOS/VSE)、分时操作系统( Linux、UNIX、XENIX、Mac OS X)、实时操作系统(iEMX、VRTX、RTOS,RT WINDOWS)

    六·存储器寻址宽

    可以将操作系统分为8位、16位、32位、64位、128位的操作系统。早期的操作系统一般只支持8位和16位存储器寻指宽度,现代的操作系统如LinuxWindows 7都支持32位和64位。

     

     

     Windows操作系统简介

    Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    Windows采用了图形化模式GUI,比起从前的DOS需要键入指令使用的方式更为人性化。随着电脑硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位、32位再到64位 系统版本从最初的Windows 1.0 到大家熟知的Windows 95Windows 98Windows MEWindows 2000Windows 2003Windows XPWindows VistaWindows 7Windows 8Windows 8.1Windows 10 和 Windows Server服务器企业级操作系统,不断持续更新,微软一直在致力于Windows操作系统的开发和完善。

    版本历史

     

    版本号

    开发代号

    版本

    发布日期

    1.0

    Interface Manager

    Windows 1.0

    1985-11-20

    2.0

    Windows 2.0

    1987-11-1

    3.0

    Windows 3.0

    1990-5-22

    3.1

    Janus

    Windows 3.1

    1992-3-18

    NT 3.1

    NTOS/2

    Windows NT 3.1

    1993-7-27

    3.2

    Janus

    Windows 3.2

    1994-4-14

    4.0

    Chicago

    Windows 95

    1995-8-24

    NT 3.5

    Daytona

    Windows NT 3.5

    1995-11-20

    NT 4.0

    Cairo

    Windows NT 4.0

    1996-7-29

    4.00.950B

    Detroit

    Windows 95 OSR2

    1996-8-24

    4.1

    Memphis

    Windows 98

    1998-6-25

    4.10.2222A

    Memphis

    Windows 98 SE

    1999-5-5

    NT 5.0

    Windows NT 5.0

    Windows 2000

    2000-2-17

    4.9

    Millennium

    Windows ME

    2000-9-14

    NT 5.1(32) NT 5.2(64)

    Whistler

    Windows XP

    2001-10-25

    NT 5.2

    Whistler Server

    Windows Server 2003

    2003-4-24

    NT 6.0

    Longhorn

    Windows Vista

    2005-7-27

    NT 5.2

    Quattro

    Windows Home Server

    2007-1-7

    NT 6.0

    Longhorn Server

    Windows Server 2008

    2008-2-27

    NT 6.1

    Blackcomb,Vienna,Windows 7

    Windows 7

    2009-10-22

    NT 6.1

    Windows Server 7

    Windows Server 2008 R2

    2009-10-22

    NT 6.1

    Vail

    Windows Home Server 2011

    2011-04-05

    NT 6.1

    Windows Thin PC

    2011-07-11

    NT 6.2

    Windows 8

    Windows 8

    2012-10-25

    NT 6.2

    Windows Server 8

    Windows Server 2012

    2012-9-4

    NT 6.3

    Windows Blue

    Windows 8.1

    2013-10-18

    NT 6.3

    Windows Server 2012 R2

    2013-10-18

    NT 6.3.9600.17031

    Windows 8.1 Spring Update

    Windows 8.1 with Update

    2014-04-08
      

    NT 10.0
      

    Windows Threshold
      

    Windows 10
      

    2015-7-29发布 

    NT10.1

    Windows10 Autumn Update

    Windows10 Update 1

    2015-10-29发布

    NT10.2

    Windows10 redstone

    2016-1发布

     

     

     

     

                                                                                                                                                              ——摘自百度百科

     

     

    Linux操作系统简介

    概述

    Linux操作系统诞生于1991 10 5 Linus Torvalds在芬兰赫尔辛基大学创作了Linux操作系统。它的出现打破了Windows操作系统一统天下的局面。

    Linux是一套免费使用和自由传播的Unix操作系统,是一个基于POSIXUNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持3264硬件。Linux继承了Unix网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    严格来讲Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

     主要特征

    1.多任务。该操作系统可同时执行多道程序

    2.多用户。多个使用者可同时在相同机器上操作(通过终端或虚拟控制台)。

    3.多平台。该操作系统可在不同的CPU上执行,不只是Intel CPU上。

    4.多处理器。

    5.对应用程序使用的内存进行保护。

    6.“按需取盘”。在Linux操作系统下,任何一个执行文件在执行时,只有那些确实被用到的代码段才会被系统读取到内存中,,这样节约了大量的读取磁盘时间,也加快了执行速度。

    7.共享内存页面。

    8.应用程序及硬盘Cache使用统一的内存池。

    9.具有动态链接库(Dynamic Linked Library   DLL)以及静态链接库。

    10.可做内存现场保存(Core Dumps)以便于事后的分析。

    11.所有的原始程序源代码都可以得到,包括整个核心及所有的驱动程序开发工具及所有应用程序。

    12.支持伪终端设备。

    13.支持数字协处理器387的软件模拟。

    14.支持数种普通的文件系统。

    15.强大的网络功能。


    Linux操作系统的组成                                                                                                                                                 Linux操作系统的内核



    展开全文
  • 2014 -2015 学年第 1 学期 《操作系统》试题(B卷) 2014 -2015 学年第 1 学期 《操作系统》试题(A卷) 一、选择题(1分×30=30分) 1.在操作系统中引入多道程序设计的目的在于( )。 A.有利于代码共享,减少...

    2014 -2015 学年第 1 学期 《操作系统》试题(B卷)

    2014  -2015  学年第 1 学期  《操作系统》试题(A卷)

    一、选择题(1分×30=30分)

    1.在操作系统中引入多道程序设计的目的在于(     )。

    A.有利于代码共享,减少主、辅存信息交换量   B.充分利用存储器

    C.充分利用CPU,减少CPU等待时间            D.提高实时响应速度

    2.为了提高系统的交互性,人们设计了(       )。

    A.批处理系统    B.分时系统    C.实时系统    D.分布式系统

    3.与计算机硬件关系最密切的软件是(       ).

    A.编译程序        B.数据库管理系统 

    C.游戏程序        D.OS

    4.对于普通用户而言,OS的(       )是最重要。

        A.开放性        B.方便性      C.有效性     D.可扩充性

    5.操作系统提供给程序员的接口是(         )。

    A.进程       B.系统调用      C.库函数      D.B和C

    6.当CPU执行操作系统代码时,称CPU处于(      )。

    A.执行态          B.目态            C.管态           D.就绪态

    7.进程的控制信息和描述信息存放在(         )。

    A.JCB        B.PCB        C.AFT         D.SFT

    8.进程从运行状态进入就绪状态的原因可能是(      )。

    A.被选中占有处理机           B.等待某一事件

    C.等待的事件已发生           D.时间片用完

    9.(      )进程调度算法适合紧急事件的处理。

        A.先来先服务    B.轮转    C.可抢占优先级   D.优先级

    10.进程依靠什么从阻塞状态过渡到就绪状态(         )。

        A.操作人员的命令            B.系统服务

    C.等待下一个时间片到来      D.由"合作"进程唤醒

    11. 如果有三个进程共享同一互斥段,而且每次最多允许两个进程进入该互斥段,则信号量的初值应设置为(      )

    A.0     B.1     C.2     D.3

    12. 当线程处于阻塞状态时,线程(     )。

        A. 正在占用处理机        B.没有占用处理机

        C. 将进入执行状态        D.将进入结束状态

    13.当多道程序系统中发生死锁时,(       )。

    1. 计算机系统不能处理任何事情
    2. 某个进程不能够执行
    3. 一组进程相互等待,并进入阻塞状态
    4. 不能进行输入和输出

    14.下面哪一个不是程序在并发系统内执行的特点(      )。

    A.产生死锁的必然性          B.资源分配的动态性

    C.程序执行的间断性          D.相互通信的可能性

    15.进程和程序的一个本质区别是(       )。

    A. 进程分时使用CPU,程序独占CPU

    B.进程存储在内存,程序存储在外存

    C. 进程在一个文件中,程序在多个文件中

    D.进程为动态的,程序为静态的

    16.在下列情况(        ),系统需要进行进程调度。

    A. 某一进程正访问一临界资源

    B.某一进程运行时因缺乏资源进入阻塞状态

    C.某一进程处于运行状态,而另一进程处于自由状态

    D.某一进程正在访问打印机,而另一进程处于就绪状态

    17. (        )进程调度算法适合多用户分时系统。

        A.先来先服务   B.时间片轮转    C.可抢占优先级   D.优先级

    18. 内存动态分区管理中,最佳适应算法的空白区是(       )。

    A.按大小递减顺序排列的       B.按大小递增顺序排列的

    C.按地址由小到大排列的       D.按地址由大到小排列的

    19. 如果要使装入内存的程序在内存中移动后仍能正常运行,必须要有(        )的支持。

    A. 静态重定位     B.动态重定位    C. 动态链接    D.静态链接

    20. 段页式管理中,地址转换表是(       )。

    A. 每个进程一张段表,一张页表

    B.每个进程的每个段一张段表,一张页表

    C.每个进程一张段表,每个段一张页表

    D.每个进程一张页表,每个段一张段表

    21.下列(         )存储管理方式能使内存碎片尽可能少,避免内存的整理。

    A.固定分区     B.可变分区     C.分页管理     D.段式管理

    22. 采用(      )不会产生内部碎片。

    A. 分页式存储管理          B. 分段式存储管理

    C. 固定分区式存储管理      D. 段页式存储管理

    23.页式虚拟存储管理的主要特点是(      )。

    A. 不要求将作业装入到主存的连续区域

    B. 不要求进行缺页中断处理

    C. 不要求将作业同时全部装入到主存的连续区域

    D.不要求进行页面置换

    24. 在单处理机计算机系统中,(      )是可以并行操作的。

    A.程序与程序              B.处理机的操作与通道的操作

    C.主程序与子程序           D.用户程序与操作系统程序

    25. 引入缓冲可以(        )。

    A.改善用户编程环境            B.提高CPU的处理速度

    C.提高CPU与设备之间的并行程度   D.降低计算机的硬件成本

    26.与设备控制器关系最密切的软件是(     )。

    A. 设备驱动程序       B. 编译程序      C.存储管理程序      D.处理机管理

    27. 在下面的I/O控制方式中,需要CPU干预最少的方式是(   )。

    A. 程序I/O方式                    B. 中断驱动I/O控制方式 

    C. 直接存储器访问(DMA)控制方式     D. I/O通道控制方式

    28. 下列算法中用于磁盘移臂调度的是(       )。

    A.时间片轮转法            B.LRU算法

    C.最短寻找时间优先算法    D.优先级高者优先算法

    29. 操作系统实现按名存取的关键在于解决(       )。

    A.文件逻辑地址到文件具体的存储地址的转换

    B.文件的符号名与文件具体的存储地址的转换和映射

    C.文件逻辑结构到文件名称转换

    D.文件名称到文件逻辑地址的转换

    30. 在文件系统中,采用位示图主要是实现(    )。

    A. 磁盘的驱动调度   B. 页面置换

    C. 文件目录的查找   D. 磁盘空间的分配和回收

     

    1-10:    CBDBB    CBDCD

    11-20:  CBCAD    BBBBC

    21-30:  CBCBC    ADCBD

     

    二、填空题(每空1分,1分×10=10分)

    1.如果系统中有n个进程,则在CPU的就绪队列中进程的个数最多为________个。

    2.在操作系统中,不可中断执行的操作称为_________。

    3.如果系统中的所有作业是同时到达的,则使作业平均周转时间最短的作业调度是________。

    4.如果信号量的当前值为-4,则表示系统中在该信号量上有________个等待进程。

    5.系统中有m个进程的,若出现死锁时死锁进程的个数为k,则______≤k≤________。

    6.不让死锁发生的策略可以分为静态和动态两种,死锁避免属于_________。

    7.若使当前运行的进程总是优先级最高的进程,应选择________进程调度算法。

    8、已知某文件采用串联结构,它由10个逻辑记录组成,每个逻辑记录刚好存放于一个磁盘块上,都为1024字节,并依次存放在10、61、32、75、87、98、46、37、33和11号磁盘块上。若要存取文件相对于文件头偏移7654字节处的信息,则要访问的磁盘块块号为_______,块内的偏移量是_______。

     

    1.n-1      2.原语      3.短作业优先算法     4.四       

    5. 2 ,m    6.动态策略 7. 剥夺式优先级      8.  37,  486

     

    三、判断题(1分×10=10分,正确写T,错误写F)

    1. 存储管理系统中最优页面置换算法可以获得最少的缺页率,因此在操作系统中普遍使用。
    2. 进程调度算法各种各样,如果选择不当,有的进程可能不能获得执行的机会,最后造成该进程死锁。
    3. 交换可以解决内存不足的问题,因此,交换也实现了虚拟存储器。
    4. 在银行家算法中,对某时刻的资源分配情况进行安全分析,如果该时刻的状态是安全的,则存在一个安全序列,且这个安全序列是唯一的。
    5. 采用链表结构的文件,存放文件的磁盘块必须是连续的。
    6. 在虚拟存储器中,需要动态重定位机构的支持。
    7. 批处理系统不允许用户随时干预自己程序的执行。
    8. DMA在内存和设备之间正在传送整块数据时,不需要CPU的干预。
    9. 在采用多道程序设计的系统中,系统运行的效率与并行运行的程序道数成正比例。
    10. 按设备数据传输的单位是数据块还是字节,设备分为块设备和字符设备。

    1-5: FFFFF       6-10:   TTTFT

    四、综合题(共50分)

    1.(6分)画出进程三基态状态变化图,并注明状态变化原因。

     

    2.(6分)设有三个作业,它们的提交时间及运行时间如下表,若采用短作业优先调度策略,试给出作业串行运行时的调度次序,计算平均周转时间。

    作业 提交时间 运行时间 
    J1    0    4

    J2    2     8

    J3    3    5

     

    3.(10分)如图1所示,系统中有三个进程GET、PRO和PUT,共用两个缓冲区BUF1和BUF2。假设BUF1中最多可放11个信息,现已放入了两个信息;BUF2最多可放5个信息,目前为空。GET进程负责不断地将输入信息送入BUF1中,PRO进程负责从BUF1中取出信息进行处理,并将处理结果送到BUF2中,PUT进程负责从BUF2中读取结果并输出。试写出正确实现GET、PRO、PUT的同步与互斥的算法(要求:(1)用类C语言描述,条理清楚,注释恰当;(2)信号量原语统一使用wait和signal)。

     

     

     

     

    4.(6分)(1) 某页式存储系统页表如下,设每页1KB,请写出逻辑地址为8300时所对应的页号和页内地址,以及在内存中对应的物理地址。(请详细写出运算过程)

    系统页表:  

    页号

    0

    1

    2

    3

    4

    5

    6

    7

    8

    块号

    3

    5

    6

    10

    8

    7

    1

    2

    4

     

    (2)已知如下段表:

    段号

    0

    1

    2

    3

    4

    基址

    219

    2300

    90

    1327

    1952

    长度

    600

    14

    100

    580

    96

    在分段存储管理下系统运行时,下列逻辑地址(第一位表示段号,第二位表示段内位移)的物理地址是什么?

    (a):(1,10) 

    (b):(4,112)

    答:            

    (1)页号P=INT[A/L]=[8300/1024]=8  

         页内地址d=[A] MOD L=[8300] MOD 1024=108  

         物理地址 4×1024+108=4204  

    (2)(a):地址(1,10)的段号为1,查表得基址为2300,段长为14,

    物理地址为:2300 + 10 = 2310。

     (b):地址(4,112)的段号为4,查表得基址为1952, 段长为96;

      地址(4,112)的段内位移为112,大于段长96,发生段越界,产生越界中断。

    5.(6分)在页式虚拟存储管理的计算机系统中,运行一个共有7页的作业,且作业在主存中分配到3块主存空间,作业执行时访问页的顺序为1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 3, 7, 6, 3, 2, 1, 2, 3, 6假设3个物理块初始为空,所有页面都采用请调式LRU替换算法,要求图示出内存页面变化情况,并计算缺页率。

    6.(5分)若磁头的当前位置为100 柱面,磁头正向磁道号减小方向移动。现有一磁盘读写请求队列,柱面号依次为:190 , 10 , 160 , 80 , 90 , 125 , 30 , 20 , 29 , 140 , 25 。若采用电梯调度算法,试计算移臂经过的柱面数和平均寻道长度。

    7.(6分)化简下图的资源分配图,并说明有无进程处于死锁状态。

     
       

     

     

     

     

    8.(5分)某UNIX操作系统的空闲盘块号栈内容为:空闲块数为3,依次登记的空闲块号为77、89、60,问此时若一个文件A需要5个盘块,系统进行分配后又有个文件B被删除,它占用的盘块块号为100、101、109、500,分析分配和回收过程,说明上述操作过后空闲盘块号栈里的空闲块个数及内容如何?

     

     

    展开全文
  • 操作系统结构

    2018-07-13 12:58:45
    操作系统的内部的六种不同的结构设计:单体系统、层次系统、微内核、客户机-服务器系统、虚拟机和exokernels。 一、单体系统 二、层次式系统 三、微内核 四、客户机-服务器模式 五、虚拟机 六、外核...
  • 操作系统L1 什么是操作系统 参考材料: 中国MOOC课程 L1 什么是操作系统 CPU告诉内存,地址为300的acsii码,通过总线控制器,通过PCI总线发送到图形控制器写入到显存地址。实际上就用了printf(“Hello!”),...
  • 文件管理 主要内容: 文件系统基础:包括文件概念、文件的...文件系统实现:包括文件系统层次结构、目录实现、文件实现。磁盘组织与管理:包括磁盘的结构、磁盘调度算法、磁盘的管理。 4.1 文件的概念和定义
  • 如何从零开始写一个简单的操作系统? 关注问题 写回答 操作系统 编程学习 如何从零开始写一个简单的操作系统? 看了这个:从零开始写一个简单的操作系统 求指教。 关注者 4,787 被浏览 352,884 关注问题 ...
  • 操作系统原理总结

    2018-07-10 23:15:47
    转载:... 操作系统的资源管理技术资源管理解决物理资源数量不足和合理分配资源这两个问题。 操作系统虚拟机为用户提供了一种简单、清晰、易用、高效的计算机模型。虚拟机的每种资源...
  • 操作系统—基本概念

    2017-06-20 09:58:57
    操作系统的概念 操作系统(Operating System, OS):是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源分配,以提供给用户和其他软件方便的接口和环境的软件集合。 操作系统的四个...
  • 文章目录一、什么是操作系统1.1向上理解1.2向下理解1.3承上启下二、OS-Kernel操作系统内核2.1操作系统内部组件2.2OS-Kernel的特征 一、什么是操作系统 操作系统很难有一个精确的定义,因为它是一个复杂的软件,其...
  • 燕山大学操作系统课程设计计划书 燕山大学课程设计计划书 课程设计名称:操作系统 题目:多道程序缓冲区协同操作 年级:2016级 开发小组名称:WWW. 小组负责人: 课题组成员: 姓名 学号 班级 分工 签字 互斥与同步...
  • 博主喜欢以最原始最直接的方式安装系统,并且不喜欢安装Ghost、精简、修改等等各种操作系统,在这里分享一个一直在用,看起来麻烦博主却觉得最适合个人安装操作系统的方式,请往下看,欢迎指正交流分享 一、关于...
  • 深度操作系统15是由武汉深之度科技有限公司研发最新推出的桌面版V15操作系统。全新风格设计与系统构架的全面提升,为你带来简洁、优美的良好体验!此外,国际化进展迅速,全新镜像源加速功能与多达30种多国语言支持,...
  • 操作系统之基础篇 一、 操作系统概述  1. 操作系统的演进   无操作系统:人工操作,用户独占,CPU等待人工操作,资源利用率很低。   批处理系统:批量输入任务,无需等待人工操作,资源利用率提升,提出多道...
  • 我看鸿蒙操作系统

    2019-06-19 02:14:26
    华为宣布推出鸿蒙操作系统。其实我觉得能理解,但也蛮无奈的,所谓不得已而为之,google不提供后续版本授权,不提供新的支持,怎么办,硬着头皮也要上。有些自媒体说什么安卓慌...
  • 这篇文章解答了我心中的疑问,那就是操作系统会自动调度cpu资源来处理多进程,多线程的并发。    早在上世纪90年代末,就有众多业界人士呼吁用CMP(单芯片多处理器)技术来替代复杂性较高的单线程CPU。IBM、惠普、...
  • 总的说来,一个操作系统包含了内核(是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件)以及其他计算机系统所必须的组件(如函数库、编译器、调式工具、文本编辑器、网站服务器,以及一个Unix的...
1 2 3 4 5 ... 20
收藏数 4,813,537
精华内容 1,925,414
热门标签
关键字:

操作系统