当前位置: 打印机 >> 打印机市场 >> 万字长文详细介绍操作系统基本概念计算机
什么是操作系统
操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层
通常情况下,计算机上会运行着许多应用程序,它们都需要对内存和CPU进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。
操作系统的主要目的是什么
操作系统是一种软件,它的主要目的有三种
管理计算机资源,这些资源包括CPU、内存、磁盘驱动器、打印机等。提供一种图形界面,就像我们前面描述的那样,它提供了用户和计算机之间的桥梁。为其他软件提供服务,操作系统与软件进行交互,以便为其分配运行所需的任何必要资源。操作系统的种类有哪些
操作系统通常预装在你购买计算机之前。大部分用户都会使用默认的操作系统,但是你也可以升级甚至更改操作系统。但是一般常见的操作系统只有三种:Windows、macOS和Linux。
操作系统结构
单体系统
在大多数系统中,整个系统在内核态以单一程序的方式运行。整个操作系统是以程序集合来编写的,链接在一块形成一个大的二进制可执行程序,这种系统称为单体系统。
在单体系统中构造实际目标程序时,会首先编译所有单个过程(或包含这些过程的文件),然后使用系统链接器将它们全部绑定到一个可执行文件中
在单体系统中,对于每个系统调用都会有一个服务程序来保障和运行。需要一组实用程序来弥补服务程序需要的功能,例如从用户程序中获取数据。可将各种过程划分为一个三层模型
除了在计算机初启动时所装载的核心操作系统外,许多操作系统还支持额外的扩展。比如I/O设备驱动和文件系统。这些部件可以按需装载。在UNIX中把它们叫做共享库(sharedlibrary),在Windows中则被称为动态链接库(DynamicLinkLibrary,DLL)。他们的扩展名为.dll,在C:\Windows\system32目录下存在多个DLL文件,所以不要轻易删除C盘文件,否则可能就炸了哦。
分层系统
分层系统使用层来分隔不同的功能单元。每一层只与该层的上层和下层通信。每一层都使用下面的层来执行其功能。层之间的通信通过预定义的固定接口通信。
微内核
为了实现高可靠性,将操作系统划分成小的、层级之间能够更好定义的模块是很有必要的,只有一个模块---微内核---运行在内核态,其余模块可以作为普通用户进程运行。由于把每个设备驱动和文件系统分别作为普通用户进程,这些模块中的错误虽然会使这些模块崩溃,但是不会使整个系统死机。
MINIX3是微内核的代表作,它的具体结构如下
在内核的外部,系统的构造有三层,它们都在用户态下运行,最底层是设备驱动器。由于它们都在用户态下运行,所以不能物理的访问I/O端口空间,也不能直接发出I/O命令。相反,为了能够对I/O设备编程,驱动器构建一个结构,指明哪个参数值写到哪个I/O端口,并声称一个内核调用,这样就完成了一次调用过程。
客户-服务器模式
微内核思想的策略是把进程划分为两类:服务器,每个服务器用来提供服务;客户端,使用这些服务。这个模式就是所谓的客户-服务器模式。
客户-服务器模式会有两种载体,一种情况是一台计算机既是客户又是服务器,在这种方式下,操作系统会有某种优化;但是普遍情况下是客户端和服务器在不同的机器上,它们通过局域网或广域网连接。
客户通过发送消息与服务器通信,客户端并不需要知道这些消息是在本地机器上处理,还是通过网络被送到远程机器上处理。对于客户端而言,这两种情形是一样的:都是发送请求并得到回应。
什么是按需分页
在操作系统中,进程是以页为单位加载到内存中的,按需分页是一种虚拟内存的管理方式。在使用请求分页的系统中,只有在尝试访问页面所在的磁盘并且该页面尚未在内存中时,也就发生了缺页异常,操作系统才会将磁盘页面复制到内存中。
多处理系统的优势
随着处理器的不断增加,我们的计算机系统由单机系统变为了多处理系统,多处理系统的吞吐量比较高,多处理系统拥有多个并行的处理器,这些处理器共享时钟、内存、总线、外围设备等。
多处理系统由于可以共享资源,因此可以开源节流,省钱。整个系统的可靠性也随之提高。
什么是内核
在计算机中,内核是一个计算机程序,它是操作系统的核心,可以控制操作系统中所有的内容。内核通常是在bootloader装载程序之前加载的第一个程序。
这里还需要了解一下什么是bootloader。
bootloader又被称为引导加载程序,它是一个程序,能够将计算机的操作系统放入内存中。在电源通电或者计算机重启时,BIOS会执行一些初始测试,然后将控制权转移到引导加载程序所在的主引导记录(MBR)。
什么是实时系统
实时操作系统对时间做出了严格的要求,实时操作系统分为两种:硬实时和软实时硬实时操作系统规定某个动作必须在规定的时刻内完成或发生,比如汽车生产车间,焊接机器必须在某一时刻内完成焊接,焊接的太早或者太晚都会对汽车造成永久性伤害。
软实时操作系统虽然不希望偶尔违反最终的时限要求,但是仍然可以接受。并且不会引起任何永久性伤害。比如数字音频、多媒体、手机都是属于软实时操作系统。
你可以简单理解硬实时和软实时的两个指标:是否在时刻内必须完成以及是否造成严重损害。
什么是虚拟内存
虚拟内存是一种内存分配方案,是一项可以用来辅助内存分配的机制。我们知道,应用程序是按页装载进内存中的。但并不是所有的页都会装载到内存中,计算机中的硬件和软件会将数据从RAM临时传输到磁盘中来弥补内存的不足。如果没有虚拟内存的话,一旦你将计算机内存填满后,计算机会对你说
呃,不,对不起,您无法再加载任何应用程序,请关闭另一个应用程序以加载新的应用程序。对于虚拟内存,计算机可以执行操作是查看内存中最近未使用过的区域,然后将其复制到硬盘上。虚拟内存通过复制技术实现了妹子,你快来看哥哥能装这么多程序的资本。复制是自动进行的,你无法感知到它的存在。
什么是进程和进程表
进程就是正在执行程序的实例,比如说Web程序就是一个进程,shell也是一个进程,文章编辑器typora也是一个进程。
操作系统负责管理所有正在运行的进程,操作系统会为每个进程分配特定的时间来占用CPU,操作系统还会为每个进程分配特定的资源。
操作系统为了跟踪每个进程的活动状态,维护了一个进程表。在进程表的内部,列出了每个进程的状态以及每个进程使用的资源等。
什么是线程,线程和进程的区别
这又是一道老生常谈的问题了,从操作系统的角度来回答一下吧。
我们上面说到进程是正在运行的程序的实例,而线程其实就是进程中的单条流向,因为线程具有进程中的某些属性,所以线程又被称为轻量级的进程。浏览器如果是一个进程的话,那么浏览器下面的每个tab页可以看作是一个个的线程。
下面是线程和进程持有资源的区别
线程不像进程那样具有很强的独立性,线程之间会共享数据创建线程的开销要比进程小很多,因为创建线程仅仅需要堆栈指针和程序计数器就可以了,而创建进程需要操作系统分配新的地址空间,数据资源等,这个开销比较大。
使用多线程的好处是什么
多线程是程序员不得不知的基本素养之一,所以,下面我们给出一些多线程编程的好处
能够提高对用户的响应顺序在流程中的资源共享比较经济适用能够对多线程架构有深入的理解什么是RR调度算法
RR(round-robin)调度算法主要针对分时系统,RR的调度算法会把时间片以相同的部分并循环的分配给每个进程,RR调度算法没有优先级的概念。这种算法的实现比较简单,而且每个线程都会占有时间片,并不存在线程饥饿的问题。
导致系统出现死锁的情况
死锁的出现需要同时满足下面四个条件
互斥(MutualExclusion):一次只能有一个进程使用资源。如果另一个进程请求该资源,则必须延迟请求进程,直到释放该资源为止。保持并等待(HoldandWait):必须存在一个进程,该进程至少持有一个资源,并且正在等待获取其他进程当前所持有的资源。无抢占(NoPreemption):资源不能被抢占,也就是说,在进程完成其任务之后,只能由拥有它的进程自动释放资源。循环等待(CircularWait):必须存在一组{p0,p1,.....pn}的等待进程,使p0等待p1持有的资源,p1等待由p2持有的资源,pn-1正在等待由pn持有的资源,而pn正在等待由p0持有的资源。
RAID的不同级别
RAID称为磁盘冗余阵列,简称磁盘阵列。利用虚拟化技术把多个硬盘结合在一起,成为一个或多个磁盘阵列组,目的是提升性能或数据冗余。
RAID有不同的级别
RAID0-无容错的条带化磁盘阵列RAID1-镜像和双工RAID2-内存式纠错码RAID3-比特交错奇偶校验RAID4-块交错奇偶校验RAID5-块交错分布式奇偶校验RAID6-P+Q冗余什么是DMA
DMA的中文名称是直接内存访问,它意味着CPU授予I/O模块权限在不涉及CPU的情况下读取或写入内存。也就是DMA可以不需要CPU的参与。这个过程由称为DMA控制器(DMAC)的芯片管理。由于DMA设备可以直接在内存之间传输数据,而不是使用CPU作为中介,因此可以缓解总线上的拥塞。DMA通过允许CPU执行任务,同时DMA系统通过系统和内存总线传输数据来提高系统并发性。
多线程编程的好处是什么
说直白点,为什么单线程能够处理的却要用多线程来处理?当然是为了提高程序的装逼并行能力了。多线程在某些情况下能够使你程序运行的更快,这也是为什么多核CPU会出现,但是多核CPU的出现会导致数据的一致性问题,不过这些问题程序员就能解决。另一个角度来说,多线程编程能够提高程序员的编程能力和编程思维。同时也能提高程序员的管理能力,你如果把每条线程流当作罗老师时间管理的女主一样,能够及时协调好所有P友的关系,那你也是超神程序员了,所以,是谁说程序员不会做管理的?DougLea大佬牛逼!!!
ps:DougLea大佬开发的JUC工具包,此处不加狗头。
什么是设备驱动程序
在计算机中,设备驱动程序是一种计算机程序,它能够控制或者操作连接到计算机的特定设备。驱动程序提供了与硬件进行交互的软件接口,使操作系统和其他计算机程序能够访问特定设备,不用需要了解其硬件的具体构造。
进程间的通信方式
通信概念
进程间的通信方式比较多,首先你需要理解下面这几个概念
竞态条件:即两个或多个线程同时对一共享数据进行修改,从而影响程序运行的正确性时,这种就被称为竞态条件(racecondition)。临界区:不仅共享资源会造成竞态条件,事实上共享文件、共享内存也会造成竞态条件、那么该如何避免呢?或许一句话可以概括说明:禁止一个或多个进程在同一时刻对共享资源(包括共享内存、共享文件等)进行读写。换句话说,我们需要一种互斥(mutualexclusion)条件,这也就是说,如果一个进程在某种方式下使用共享变量和文件的话,除该进程之外的其他进程就禁止做这种事(访问统一资源)。一个好的解决方案,应该包含下面四种条件
任何时候两个进程不能同时处于临界区不应对CPU的速度和数量做任何假设位于临界区外的进程不得阻塞其他进程不能使任何进程无限等待进入临界区
忙等互斥:当一个进程在对资源进行修改时,其他进程必须进行等待,进程之间要具有互斥性,我们讨论的解决方案其实都是基于忙等互斥提出的。解决方案
进程间的通信用专业一点的术语来表示就是InterProcessCommunication,IPC,它主要有下面几种通信方式
消息传递:消息传递是进程间实现通信和同步等待的机制,使用消息传递,进程间的交流不需要共享变量,直接就可以进行通信;消息传递分为发送方和接收方先进先出队列:先进先出队列指的是两个不相关联进程间的通信,两个进程之间可以彼此相互进程通信,这是一种全双工通信方式管道:管道用于两个相关进程之间的通信,这是一种半双工的通信方式,如果需要全双工,需要另外一个管道。直接通信:在这种进程通信的方式中,进程与进程之间只存在一条链接,进程间要明确通信双方的命名。间接通信:间接通信是通信双方不会直接建立连接,而是找到一个中介者,这个中介者可能是个对象等等,进程可以在其中放置消息,并且可以从中删除消息,以此达到进程间通信的目的。消息队列:消息队列是内核中存储消息的链表,它由消息队列标识符进行标识,这种方式能够在不同的进程之间提供全双工的通信连接。共享内存:共享内存是使用所有进程之间的内存来建立连接,这种类型需要同步进程访问来相互保护。进程间状态模型
catchapter1chapter2chapter3
greptree
第一个进程是cat,将三个文件级联并输出。第二个进程是grep,它从输入中选择具有包含关键字tree的内容,根据这两个进程的相对速度(这取决于两个程序的相对复杂度和各自所分配到的CPU时间片),可能会发生下面这种情况,grep准备就绪开始运行,但是输入进程还没有完成,于是必须阻塞grep进程,直到输入完毕。
当一个进程开始运行时,它可能会经历下面这几种状态
图中会涉及三种状态
运行态,运行态指的就是进程实际占用CPU时间片运行时就绪态,就绪态指的是可运行,但因为其他进程正在运行而处于就绪状态阻塞态,除非某种外部事件发生,否则进程不能运行逻辑上来说,运行态和就绪态是很相似的。这两种情况下都表示进程可运行,但是第二种情况没有获得CPU时间分片。第三种状态与前两种状态不同的原因是这个进程不能运行,CPU空闲时也不能运行。
三种状态会涉及四种状态间的切换,在操作系统发现进程不能继续执行时会发生状态1的轮转,在某些系统中进程执行系统调用,例如pause,来获取一个阻塞的状态。在其他系统中包括UNIX,当进程从管道或特殊文件(例如终端)中读取没有可用的输入时,该进程会被自动终止。
转换2和转换3都是由进程调度程序(操作系统的一部分)引起的,进程本身不知道调度程序的存在。转换2的出现说明进程调度器认定当前进程已经运行了足够长的时间,是时候让其他进程运行CPU时间片了。当所有其他进程都运行过后,这时候该是让第一个进程重新获得CPU时间片的时候了,就会发生转换3。
程序调度指的是,决定哪个进程优先被运行和运行多久,这是很重要的一点。已经设计出许多算法来尝试平衡系统整体效率与各个流程之间的竞争需求。
当进程等待的一个外部事件发生时(如从外部输入一些数据后),则发生转换4。如果此时没有其他进程在运行,则立刻触发转换3,该进程便开始运行,否则该进程会处于就绪阶段,等待CPU空闲后再轮到它运行。
调度算法都有哪些
调度算法分为三大类:批处理中的调度、交互系统中的调度、实时系统中的调度
批处理中的调度
先来先服务
很像是先到先得。。。可能最简单的非抢占式调度算法的设计就是先来先服务(first-
转载请注明:http://www.aideyishus.com/lkjg/2634.html