操作系统(Operating System,OS) 是指控制和管理整个计算机系统的硬件和软件资源,并合理地调度计算机的工作和资源分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
eg:进程是一个程序执行过程,执行前需要将该程序放到内存中,才能被CPU处理。
功能:
目标:
理解并发和并行的区别,并发和共享互为存在条件,没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本特征
特征
互斥共享:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
同时共享:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。(宏观上是同时,微观上可能是交替对资源进行 访问,即分时共享)。
eg:使用QQ发送文件A,使用微信发送文件B
两个进程正在并发执行(并发性)
需要共享地访问硬盘资源(共享性)
eg:使用QQ和微信视频,同一时间段内摄像头只能分配给其中一个进程(互斥共享)
使用QQ发送文件A,同时使用微信发送文件B,宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从 中读取数据。从微观上看,两个进程是交替着访问硬盘的(互斥共享)。
eg:一个程序需要放入内存并给他分配CPU才能执行,那么为什么单核CPU可以同时运行多个程序。因为虚拟处理技术,实际上只有 一个单核CPU,在用户看来似乎由多个CPU同时为自己服务。
手工操作阶段: 早期的操作方式是由程序员将事先已经穿好孔的纸带(或卡片),装入纸带输入机(或卡片输入机),再启动它们将纸带(或卡片)上的程序和数据输入计算机,然后启动计算机运行。仅当程序运行完毕并取走计算结果后,才允许下一用户上机。
缺点: 1).用户独占全机。即一台计算机的全部资源由上机用户所独占。
2).人机速度矛盾导致资源利用率极低。CPU等待人工操作。当用户进行装带(卡)、卸带(卡)等人工操作时,CPU及内存等资源是空闲的。
单道批处理系统: 引入脱机输入/输出技术(用磁带完成),并监督程序负责控制作业的输入、输出。
优点:(自动性)缓解了一定程序的人机速度矛盾,资源利用率有所提升。
缺点:(顺序性、单道性)内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
多道批处理系统: 允许多个程序同时进入内存并允许他们在CPU中交替地运行。这些程序共享系统中的各种硬/软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
优点: 多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持"忙碌"状态,系统吞吐量大。
缺点: 用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)。
分时操作系统: 计算机以时间片为单位,轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
优点: 用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用同一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
实时操作系统: 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完时件。实时操作系统的主要特点是及时性和可靠性。分时操作系统分为硬实时系统和软实时系统。硬实时系统: 必须在绝对严格的规定时间内完成处理。eg:导弹控制系统、自动驾驶系统。软实时系统: 能接受偶尔违反时间规定。eg:12306火车订票系统。
优点: 能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。
以下做简单了解
网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源地共享(eg:文件共享)和各台计算机之间地通信(eg:Windows NT就是一种典型地网络操作系统,网站服务器就可以使用)。
分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成个人任务。
个人计算机操作系统:eg:Windows XP、MacOS,方便个人使用。
指令就是处理器(CPU)能识别、执行的最基本命令。
新的问题:有的指令“人畜无害”。有的指令有很高的权限,eg:内存清零指令,如果用户程序可以使用这个指令,就意味着一个用户可以将其他用户的内存数据随意清零,这样做很危险。
特权指令:如内存清零指令,不允许用户程序使用。
非特权指令:如普通的运算指令。
核心态(管态):特权指令,非特权指令都能执行。
用户态(目态):只能执行非特权指令。
内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。
应用程序:为了保证系统运行安全,普通应用程序只能执行非特权指令,运行在用户态。
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态。优点,高性能。缺点,内核代码庞大,结构混乱,难以维护
微内核:只要把基本的功能保留在内核。优点,内核功能少,结构清晰,方便维护。缺点:需要频繁地在核心态和用户态之间切换,性能低。
eg:操作系统地体系结构问题与企业管理问题很相似。
内核就是企业的管理层,负责一些重要地工作。只有管理层才能执行特权指令,普通员工只能执行非特权指令。用户态、核心态之间地切换相当于普通员工和管理层之间的工作交接。
大内核:企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高,缺点是组织结构混乱,难以维护。
微内核:随着企业体量越来越大,管理层只负责最核心的一些工作。优点是组织结构清晰,方便维护。缺点是效率低。
各个程序只能串行执行,系统资源利用率低。
中断机制的诞生:为了解决资源利用率低,人们发明了操作系统(作为计算机的管理者),引入中断机制,实现了多道程序并发执行。
本质:发生中断就意味着需要操作系统介入,开展管理工作。
发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I\O设备等)需要使用特权指令,因此CPU要从用户态转换为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。
2:30-6:20有详细讲解动画过程。
王道计算机考研 操作系统
用户态、核心态之间的切换是怎么实现的?
用户态→核心态是通过中断实现的。并且中断是唯一途径。
核心态→用户态的切换是通过执行一个特权指令,将程序状态字(RSW)的标志位设置为“用户态”
什么是系统调用?有什么作用?
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。
“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
应用程序通过系统调用请求操作系统的服务,系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如储存分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提供服务请求,由操作系统代为完成,这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用与库函数的区别
系统调用背后地过程