操作系统基本原理

article/2025/10/14 22:00:24

操作系统的类型与结构

       操作系统是计算机系统中最基本的系统软件,它既管理计算机系统的软、硬件资源,又控制程序的执行。操作系统的基本类型有:批处理操作系统、分时操作系统和实时操作系统。从资源管理的角度看,操作系统主要是对处理器、存储器、文件、设备和作业进行管理。操作系统(Operating System,OS)是计算机系统中的核心系统软件,负责管理和控制计算机系统中的硬件和软件资源,合理地组织计算机工作流程和有效地利用资源,在计算机与用户之间起接口的作用。操作系统为用户提供的接口表现形式一般为:命令、菜单、窗口之类的,而操作系统为应用程序提供的接口为 API。操作系统与硬件/软件的关系如下图所示。
操作系统与硬件/软件的关系

操作系统基本原理

       操作系统的主要功能是进行处理机与进程管理、存储管理、设备管理、文件管理和作业管理的工作。

进程管理

       处理机管理也被称为进程管理。处理机管理的功能就是组织和协调用户对处理机的争夺使用,把处理机分配给进程,对进程进行管理和控制,最大限度也发挥处理机的作用。

  1. 进程
           进程的概念用静态的观点看,操作系统是一组程序和表格的集合。用动态的观点看,操作系统是进程的动态和并发执行的。
           顺序程序是指程序中若干操作必须按照某种先后次序来执行,并且每次操作前和操作后的数据、状态之间都有一定的关系。在早期的程序设计中,程序一般都是按顺序执行的。
           在多道程序系统中,程序的运行环境发生了很大的变化。主要体现在资源共享和程序的并发执行/并行执行。程序的并行执行和资源共享之间是相辅相成的。一方面,只有允许程序并行执行,才可能存在资源共享的问题;另一方面,只有有效地实现资源共享,才可能使得程序并行执行。

  2. 进程的状态转换
    由进程运行的间断性,决定了进程至少具有以下三种状态:
    (1)就绪状态。当进程已分配了除 CPU 以外的所有必要的资源后,只要能再获得处理机,便能立即执行,把这时的进程状态称为就绪状态。在一个系统中,可以有多个进程同时处于就绪状态,通常把它们排成一个队列,称为就绪队列。
    (2)执行状态指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程处于执行状态。
    (3)阻塞状态指进程因发生某事件(如请求 I/O、申请缓冲空间等)而暂停执行时的状态,亦即进程的执行受到阻塞,故称这种暂停状态为阻塞状态,有时也称为“等待”状态,或“睡眠”状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。

           进程的状态可以动态地相互转换,具体转换条件见下图,但阻塞状态的进程不能直接进入执行状态,就绪状态的进程不能直接进入阻塞状态。在这里插入图片描述

  3. 挂起状态
           在不少系统中,进程只有就绪、运行、阻塞三种状态。但在另外一些系统中,又增加了一些新状态,其中最重要的是挂起状态。引入挂起状态的原因有:对换的需要、终端用户的请求、父进程请求、负荷调节的需要、操作系统的需要。

  4. 互斥与同步
           进程互斥与同步进程互斥定义为:一组并发进程中一个或多个程序段,因共享某一共有资源而导致必须以一个不允许交叉执行的单位执行。也就是说互斥是要保证临界资源在某一时刻只被一个进程访问。
           进程同步定义为:把异步环境下的一组并发进程因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步。也就是说进程之间是异步执行的,同步即是使各进程按一定的制约顺序和速度执行。
           互斥是资源的竞争关系,而同步是进程间的协作关系。

  5. 前趋图
           前趋图是一个由结点和有向边构成的有向无循环图。该图通常用于表现事务之间先后顺序的制约关系。图中的每个结点可以表示一个语句、一个程序段或是一个进程,结点间的有向边表示两个结点之间存在的前趋关系。
    在这里插入图片描述
           图中 A1 没有前趋结点,称为开始结点,它不受任何制约,可以直接执行;而 B1 与 A2 只能在 A1 执行完成之后才能开始,而 B2 必须在 B1 与 A2 完成之后才能开始;C3 没有后继结点,称为终止结点。

  6. 进程调度与死锁
           进程调度即处理器调度(又称上下文转换),它的主要功能是确定在什么时候分配处理器,并确定分给哪一个进程,即让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行。
           调度算法:先来先服务(FCFS/FIFO)、优先数调度、轮转法。
           当若干个进程互相竞争对方已占有的资源,无限期地等待,不能向前推进时会造成“死锁”。 死锁是系统的一种出错状态,它不仅会浪费大量的系统资源,甚至还会导致整个系统的崩溃,所以死锁是应该尽量预防和避免的。
           产生死锁的必要条件是:互斥条件、保持和等待条件、不剥夺条件和环路等待条件。
           解决死锁有两种策略:一种是在死锁发生前采用的预防和避免策略;另一种是在死锁发生后采用的检测与恢复策略。
           实际上,系统出现死锁的概率很小,故从系统所花的代价上看,采用死锁发生后的检测与恢复策略要比采用死锁发生前的预防与避免策略代价小一些。

存储管理

       存储管理主要是指对内存储器的管理,负责对内存的分配和回收、内存的保护和内存的扩充。存储管理的目的是尽量提高内存的使用效率。存储管理的机制经历了多次变迁,由以前的单一连续区管理到分区存储管理再发展为段页式管理。

  1. 页式存储管理
           分页的基本思想是把程序的逻辑空间和内存的物理空间按照同样的大小划分成若干页面,并以页面为单位进行分配。
    在这里插入图片描述
           当内存中无空闲块时,为了装入一个页面而必须按某种算法从已在内存的页中选择一页,将它暂时调出内存,让出内存空间以存放所需装入的页面,这个工作称为“页面调度”。常用的页面调度算法有:最优(OPT)算法、随机(RAND)算法、先进先出算法、最近最少使用(Least Recently Used,LRU)算法

  2. 段式存储管理
           段式存储管理与页式存储管理相似。分段的基本思想是把用户作业按逻辑意义上有完整意义的段来划分,并以段为单位作为内外存交换的空间尺度。

  3. 段页式存储管理
           段页式管理是段式和页式两种管理方法结合的产物,综合了段式组织与页式组织的特点,根据程序模块分段,段内再分页,内存被分划成定长的页。
    在这里插入图片描述
           如果按段页式存储管理的方式,把每一段再分成若干页面,那么,每一段不必占用连续的存储空间;甚至当内存块不够时,可只将一段中的部分页面装入内存,这种管理方式称为“段页式虚拟存储管理”。段页式虚拟存储管理结合了段式和页式的优点,但增加了设置表格(段表、页表)和查表等开销,段页式虚拟存储器一般只在大型计算机系统中使用。

设备管理

       在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备。它包括输入/输出设备,辅存设备及终端设备等。

文件管理

       文件管理的功能包括:建立、修改、删除文件;按文件名访问文件;决定文件信息的存放位置、存放形式及存取权限;管理文件间的联系及提供对文件的共享、保护和保密等。

  1. 文件的逻辑结构
           文件的结构是指文件的组织形式,从用户角度所看到的文件组织形式,称为文件的逻辑结构。
  2. 文件的物理结构
           文件的物理结构是指文件在存储设备上的存放方法。文件的物理结构涉及文件存储设备的组块策略和文件分配策略,决定文件信息在存储设备上的存储位置。常用的文件分配策略有:
    顺序分配(连续分配):其缺点是在文件建立时必须指定文件的信息长度,以后不能动态增长,一般不宜用于需要经常修改的文件。
    链接分配(串联分配):链接分配的优点是可以解决存储器的碎片问题,提高存储空间利用率。由于链接文件只能按照队列中的链接指针顺序查找,因此搜索效率低,一般只适用于顺序访问,不适用于随机存取。
    索引分配(见下图):索引分配既可以满足文件动态增长的要求,又可以方便而迅速地实现随机存取
    索引结构图
           索引分配既可以满足文件动态增长的要求,又可以方便而迅速地实现随机存取。索引文件的优点是既适用于顺序存取,又适用于随机存取。缺点是索引表增加了存储 空间的开销。
  3. 文件存储设备管理
           文件存储设备的管理实质上是对空闲块的组织和管理问题。它包括空闲块的组织,空闲块的分配与空闲块的回收等问题。有3种不同的空闲块管理方法,它们分别是索引法、链接法和位示图法。

作业管理

       从用户的角度看,作业是系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和。一个作业从交给计算机系统到执行结束退出系统,一般都要经历提交、后备、执行和完成 4 个状态。

  1. 提交状态
    作业由输入设备进入外存储器(也称输入井)的过程称为提交状态。处于提交状态的作业,其信息正在进入系统。
  2. 后备状态
    当作业的全部信息进入外存后,系统就为该作业建立一个作业控制块(Job Control Block,JCB)。系统通过 JCB 感知作业的存在。JCB 主要内容包括作业名、作业状态、资源要求、作业控制方式、作业类型及作业优先权等。
  3. 执行状态
    一个后备作业被作业调度程序选中而分配了必要的资源并进入了内存,作业调度程序同时为其建立了相应的进程后,该作业就由后备状态变成了执行状态。
  4. 完成状态
    完成状态。当作业正常运行结束,它所占用的资源尚未全部被系统回收时的状态为完成状态。

http://chatgpt.dhexx.cn/article/2ERwcjAx.shtml

相关文章

操作系统原理(概述)

1.操作系统的工作: (1)程序的执行:负责启动每个程序,以及结束程序的工作。 (2)完成与硬件有关的工作:实现代码中包含存储器的物理地址、对设备接口寄存器和设备接口缓冲区的读写等…

Unity UGUi之Panel

Unity UGUI之Panel制作滑块 新建一个Panel和一个Image,image放在Panel下做子物体。 给Panel添加 Scroll Rect 和 Mask 组件, Mask组件是用来隐藏image超出Panel的区域。 然后将image拖拽到Scroll Rect组件下的Content属性上。 Horizontal是水平滑动,…

winform 设置panel边框

var panel1 new Panel(); var old panel1.Margin; panel1.Margin new Padding(old.Left, -50, old.Right, old.Bottom);

EasyUI中Panel面板的简单使用

场景 效果 属性 名称类型描述默认值idstring面板(panel)的 id 属性。nulltitlestring显示在面板(panel)头部的标题文字。nulliconClsstring在面板(panel)里显示一个 16x16 图标的 CSS class。nullwidthnu…

[C# WinForm设计]Panel布局及TabControl增加关闭按钮和Treeview导航 源码

前段时间因工作需要做一个类似进销存的系统,这里要用到基于C/S架构的WinForm界面,为了给我一样的菜鸟多一个参考,现将过程及关键界面的实现代码贴在后面,供参考!老鸟飘过~~ 一、实现效果 演示 namespace TabTest {part…

C#Winform中如何将窗体显示在panel中

在窗体中我们有时候做美观就需要将一个窗体显示在panel或SplitContainer里的panel中如何实现呢? 代码: public void Showform(Form form) //定义方法 { //清除panel里面的其他窗体 this.splitContainer1.Panel2:要显示的panel this.splitCont…

从零开始学习CANoe(四)—— 设计panel

相关文章 从零开始学习CANoe(一)—— 新建工程从零开始学习CANoe(二)—— CANdb 创建 dbc文件从零开始学习CANoe(三)—— 系统变量的创建和使用从零开始学习CANoe(四)—— 设计pane…

winform无边框在panel上拖动窗口位置,改变窗口大小

将窗体的FormBorderStyles属性设置为None 窗体上放一个新的panel,设置Dock属性为Fill 创建变量 private bool isMouseDown false;//表示鼠标当前是否处于按下状态,初始值为否 MouseDirection direction MouseDirection.None;//表示拖动的方向&#x…

C# Winform Panel 内控件大小不随Panel大小改变设置

(1)将Anchor属性设置为:None (2)将AutoSize属性设置为:False 不过还存在一个问题点,就是Button的位置还是会随着Panel大小变化而改变。

Panel控件

今天小编来给大家介绍一下panel控件; 首先来看一下panel控件是什么? 是什么: Panel 控件提供了一种用于组织控件的分组机制。Panel 控件可被递归嵌套在 Form 控件(Panel 控件最外面的容器)中。面板呈现它本身包含的控件。 面板上…

UI的Panel面板

1.Panel panel控件又叫面板,该面板实际就是一个容器,在其上可放置其他UI控件 当移动该面板时,放在其中的UI控件会随着移动,这样更加合理与方便地移动与处理一组控件 当面板被创建时,会默认包含一个Image(Script) Sour…

Unity Panel 控件

Panel 容器组件又叫面板组件,实际上就是一个容器,在其中可以放置其他的UI元素。 注意,在Unity中,子物体的位置是相对于父物体的,而非绝对位置 在Panel的参数区中,除了空间位置这个常用参数外,我…

Linux系统之部署Linux管理面板1Panel

Linux系统之部署Linux管理面板1Panel 一、1Panel介绍1.1Panel简介2.1Panel特点 二、本地环境规划1.本此实践目的2.本地环境规划 三、检查本地环境1.检查操作系统版本2.检查系统内核版本 四、部署1Panel1.创建安装目录2.一键部署1Panel3.检查1Panel服务运行状态4.检查1Panel监听…

javasocket编程(javasocket通信)

Java网络编程-JavaSocket编程是什么呢? Socket传输模式 Sockets有两种主要的操作方式:面向连接的和无连接的。面向连接的sockets操作就像一部电话,他们必须建立一个连接和一人呼叫。所有的事情在到达时的顺序与它们出发时的顺序时…

(Android)JavaSocket编程,文件上传到服务器,客户端Android,服务器端J2SE

SD卡中有encrypt.png文件 在E盘可以看到,从模拟器SD卡中发送来的文件 服务器端代码,我这里是使用CMD命令演示的。服务端等待客户端连接,然后接收客户端的数据。包括文件名,大小,和文件数据。 import java.io.Buffered…

Java Socket实现文件传输

阿里云双11服务器优惠(年度最佳优惠): A:1核2GB 1M 服务器年69元 B:1核2GB 1M 服务器三年180元 C:2核4GB 1~10M 服务器三年567元(强烈推荐) D:4核8GB 1~10M 服务器三年10…

Java Tcp(Socket、ServerSocket)

TCP所提供服务的主要特点: 面向连接的传输;端到端的通信;高可靠性,确保传输数据的正确性,不出现丢失或乱序;全双工方式传输;采用字节流方式,即以字节为单位传输字节序列&#xff1b…

【Socket】Java Socket通信(一)

前段时间在网上学习了Java Socket的应用编程。 端口 用于区分不同应用程序端口号范围065535,其中01023为系统所保留IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础http:…

java socket编程总结

java socket编程总结 说明一、TCP/IP协议模型二、获取IP相关信息InetAddressInetSocketAddressURL 三、TCP编程四、UDP编程五、关于TCP与UDP 说明 更新时间:2020/12/01 17:17,更新完基本内容 java的socket编程做一个总结,主要是面向Tcp和Ud…

Java Socket网络编程,你要的实验,我都有

JAVA Socket编程 目录 JAVA Socket编程多人聊天室客户端源代码服务器端源代码运行展示 邮件发送客户端运行展示 在线云笔记客户端窗口服务器端代码运行展示 多人聊天室 客户端源代码 import java.awt.BorderLayout; import java.awt.HeadlessException; import java.awt.event…