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

    万次阅读 多人点赞 2018-02-27 20:28:56
    原文地址操作系统基本特征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). 深入理解计算机系统.

    • 小土刀的面试刷题笔记

    • 进程间的几种通信方式

    展开全文
  • 操作系统基础知识复习总结

    万次阅读 多人点赞 2019-08-17 20:59:38
    操作系统 操作系统概述 操作系统作用 存储管理 处理机管理 设备管理 文件管理 用户接口 操作系统的定义 是管理和控制计算机系统中各种硬件和软件资源、合理地组织计算机工作流程的...

    操作系统

    操作系统概述

    操作系统作用

    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操作系统的内核



    展开全文
  • 计算机操作系统是计算机专业必修的专业基础课程,是考研的必考科目。它的特点是概念多、较抽象和涉及面广,所以无论是大学学习还是考研,很多同学都把它当做一块硬骨头,其实只要我们掌握正确的学习方法,操作系统...
  • 操作系统&文件管理之FCB

    万次阅读 2017-09-13 23:58:39
    操作系统的外存(主要指磁盘)管理模块根据各磁盘块的当前状态(忙和闲:磁盘管理程序可配置bitmap数据结构,用来统一表示各磁盘块忙闲情况)可分为两类,一是空闲磁盘块的调度管理,二是已占用了磁盘块的文件管理。...

    操作系统的外存(主要指磁盘)管理模块根据各磁盘块的当前状态(磁盘管理程序可配置bitmap数据结构,用来统一表示各磁盘块忙闲情况)可分为两类,一是空闲磁盘块的调度管理,二是已占用了磁盘块的文件管理。本文便讨论已使用了外存存储设备的文件的索引和读取管理。

    前面提到操作系统的磁盘管理为了和内存管理配合,也是将磁盘分割为最小单元进行统一调度,和内存的页帧概念对应,磁盘管理模块以磁盘块作为最小单元管理磁盘(常见的磁盘块为1KB,对应2个512B扇区,磁盘块是OS概念,磁盘驱动读取是以扇区作为最小单元)。

    FCB (file control block)文件控制块

    对于操作系统而言,当任何一个文件存储在本地后,会为了方便后续读取管理,而为每个文件建立专门的用以收集必要属性信息的数据结构,称为FCB(概念借鉴自进程管理模块中的PCB process control block)。将数据结构FCB中的信息收集如下。

    这里写图片描述

    Fig.1 FCB示意图

    在UNIX系统中的FCB的具体实现如下

    文件逻辑结构

    按照文件逻辑可分为结构文件(数据表格)和字符流式文件(源程序,dll程序,普通文档)。
    对于结构文件,又存在定长记录文件(表格项数目和长度固定)和非定长记录文件(非结构性数据,如每条评论留言,长短不一,当然也可以粗暴地预留足够空间统一规格对待,但是空间利用效率会低)

    文件物理结构

    结构类型 定义 优点 缺点 其他
    连续文件 文件顺序存放在外存的若干个连续物理块中 读取速度快,占用盘块可能处于相连甚至相同的磁道上,故而磁头移动距离较短。 该类占用的磁盘块需要连续成块分配,长期使用会导致较多的磁盘内部碎片,静态分配方式不利于文件长度的动态增删。 常用这种方式来存放频繁使用的程序文件,如boot程序、系统文件经常存放在序号较前的磁盘块连续序列中。
    串联文件 该类文件使用的磁盘块不连续,盘块之间通过指针相连,行成串联的队列。 支持文件动态增删,磁盘利用率提高。 文件读取速度低下,磁盘块索引保存方式鲁棒性较差,一旦中间任一磁盘块的指针部分缺损,将导致整个文件无法读取。 指针若是直接埋在个磁盘块中,并没有集中二次处理成查询目录,则称之为隐式连接;若是这些指针统一放置在一张表中(Windows2000以前采用的FAT:file allocation table系统便是采用这种方式),则称为显式连接。每个表项对应一个物理块,存放的指针指向同一文件的逻辑上的下一物理块,这样该FAT表其实还间接地实现了此前提到的bitmap各磁盘块忙闲情况表示功能。当然对于现在的动辄1T的硬盘,其FAT表可不小,想要遍历一次FAT表可能得分批次读入FAT表,性能堪忧,所以现在Windows采用了更好的NTFS文件系统。
    索引文件 为每个文件占用的磁盘块建立一张专属的索引表,即文件逻辑块号和物理磁盘块号的对照表。 即实现了磁盘块的动态分配,利于文件长度动态增减,因为索引表的引入故而速度介于连续文件和串联文件之间。 系统需要为每个文件维护一张索引表,系统存在额外开销。 索引表的size显然是和文件size的直接相关的,FBC中便保留了指向该索引表的指针,当然文件如果太大,还是需要多重索引来解决索引表过大的问题。如图2。

    SouthEast
    Fig.2 多重索引文件结构

    展开全文
  • 操作系统之文件管理

    千次阅读 多人点赞 2020-09-22 03:08:05
    一、文件与文件系统 1.1 文件是什么 文件是对磁盘的抽象 所谓文件是指一组带标识(标识即为文件名)的、在逻辑上有完整意义的信息项的序列。...从操作系统角度:怎样组织、管理文件 * 文件的描述、分类
  • 文件在文件系统中是一个基本的管理单元,这个管理单元必然有一组属性 文件属性 类型 长度 物理位置 建立时间 等 类型 用途 系统文件 用户文件 库文件 数据形式 源文件 目标文件 可执行文件 存取控制属性 ...
  • 数据项是文件系统中最低级的数据组织形式,可分为以下两种: 基本数据项。用于描述一个对象的某种属性的一个值。是数据中可命名的最小逻辑单元,即原子数据。 组合数据项。由多个基本数据项组成。 记录。记录是指...
  • 操作系统》总结四(文件管理)

    万次阅读 2017-10-17 15:11:05
    文件管理 主要内容: 文件系统基础:包括文件概念、文件的...文件系统实现:包括文件系统层次结构、目录实现、文件实现。磁盘组织与管理:包括磁盘的结构、磁盘调度算法、磁盘的管理。 4.1 文件的概念和定义
  • 操作系统原理总结

    万次阅读 多人点赞 2018-07-10 23:15:47
    转载:... 操作系统的资源管理技术资源管理解决物理资源数量不足和合理分配资源这两个问题。 操作系统虚拟机为用户提供了一种简单、清晰、易用、高效的计算机模型。虚拟机的每种资源...
  • 操作系统L1 什么是操作系统 参考材料: 中国MOOC课程 L1 什么是操作系统 CPU告诉内存,地址为300的acsii码,通过总线控制器,通过PCI总线发送到图形控制器写入到显存地址。实际上就用了printf(“Hello!”),...
  • 操作系统原理

    千次阅读 2019-09-08 13:16:26
    目录 目录 ... 操作系统原理1 —— 概念 >> 操作系统原理2——OS结构 >> 操作系统原理3——多道程序 >> 操作系统原理4——存储管理 >> 操作系统原理5——文件管理 ...
  • 系统操作手册

    2019-07-23 11:48:10
    为了方便用户使用,现把常用的操作手册详细记录下: 一、工作中心设置 按上面样例,尽量详细填写,这样系统就可以更准确地自动计算产品的真实成本。 二、BOM管理 三、采购管理 四、销售管理 五、客服...
  • 八款国产操作系统

    万次阅读 2018-01-01 09:05:57
    (点击上方蓝字,快速关注)目前世界上存在的那些操作系统:Windows、MAC OS X、MVX、DOS/VSE、UNIX、Linux等,很少见到国产操作系统的影子,你知道国产操作系统有那些吗?虽然国内的操作系统我们可能用不上,但我们有...
  • linux查看操作系统版本、内存信息

    万次阅读 2020-01-08 20:50:38
    1、前言 ...Linux查看版本当前操作系统内核信息 2、cat /proc/version Linux查看当前操作系统版本信息 3、 cat /etc/issue 或cat /etc/redhat-release Linux查看版本当前操作系统发行版信息 ...
  • 小编这几天下载试用了几款国产操作系统,分别是:中兴新支点操作系统、红旗操作系统、优麒麟操作系统、普华操作系统!经过不断的测试发现:这几款操作系统流畅度都不错!不过要说适于普通人使用的国产操作系统,目前...
  • ISO文件是我从官网下载的,资源本身肯定是没有问题的。 我的解决办法是,选择稍后安装操作系统。在自定义硬件里,选择使用ISO映像文件。 然后配置好后打开虚拟机即可。...
  • 操作系统不支持.netframework4.7.1

    万次阅读 2018-10-02 17:52:16
    在使用.netframework4.7.1安装程序安装的时候出现了错误:此操作系统不支持.netframework,但是其实不是不支持,需要把Windows更新到最新的系统之后那么就可以成功安装了,此时需要使用到一个安装程序,那就是Windows...
  • 树莓派的操作系统介绍

    万次阅读 2015-08-30 23:33:49
    是当前实用最广泛的操作系统 2、Pidora(单纯的Arm版的Linux系统,基于Fedora) 是拥有另一种风格的树莓派操作系统 3、Arch Linux ARM(单纯的Arm版的Linux系统,基于Arch Linux) 对linux操作系统很熟悉的...
1 2 3 4 5 ... 20
收藏数 4,935,256
精华内容 1,974,102
关键字:

操作系统