操作系统概论
第一节课老师大体讲解了一下操作系统的概念,下课时做了个小结,有以下几条:
- OS定义(P5)
- 处理机两种执行状态(核心态=管态,用户态=目态)
- Kernel(OS运行与核心态的代码)
- 系统从用户态进入核心态执行的途径:中断(含系统调用和陷阱)
- 分时(Time Sharing)1959,MIT提出,1961实现。时间片大小?
- 特权指令(启动I/O等影响系统安全的指令,只能OS执行)
- 并行与并发(P12)
- OS与用户接口
对上面一些内容的详解
OS定义(描述性)
操作系统是合理组织计算机的工作流程,有效控制和管理计算机系统的各类资源,并方便用户使用计算机的程序集合。它是一个最重要的系统软件。
处理机两种执行状态(核心态=管态,用户态=目态)
在处理器的存储保护中,主要有两种权限状态,一种是核心态(管态),也被称为特权态;一种是用户态(目态)。
1、什么是处理机?
处理机是处理计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。
处理机包括中央处理器,主存储器,输入-输出接口。处理机加接外围设备就构成完整的计算机系统
2、核心态(管态)
管态(Kernel Mode)是指操作系统的管理程序在执行时CPU所处的状态,又称系统态、核心态或内核态。(核心态是操作系统内核所运行的模式,运行在该模式的代码,可以无限制地对系统存储、外部设备进行访问。)
3、用户态(目态)
目态(User Mode)是指用户程序在执行时CPU所处的状态,又称用户态。(指非特权的执行状态。内核禁止此状态下的代码进行潜在危险的操作,比如写入系统配置文件、杀掉其他用户的进程、重启系统等。(在CPU的设计中,用户态指非特权状态。在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。))
4、设置两种状态的目的
限制不同的程序之间的访问能力
CPU处于管态时,既可以执行特权指令,也可以执行非特权指令;CPU处于目态时,只可执行非特权指令。
用户态切换到内核态
需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令
这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)
3种方式
(1) 系统调用这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。
(2) 异常当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
(3) 外围设备的中断当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。
时间片的大小
时间片设得太短会导致过多的进程切换,降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。将时间片设为100毫秒通常是一个比较合理的折衷。
注:有的操作系统有CPU时间片大小这个参数,但很容易理解这是偷换概念,本质改变这个参数仍是改变分配给线程的CPU时钟频率大小,而不是时间
特权指令
特权指令指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。
在多用户、多任务的计算机系统中特权指令必不可少。它主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。
常见的特权指令有以下几种:
(1)有关对I/O设备使用的指令 如启动I/O设备指令、测试I/O设备工作状态和控制I/O设备动作的指令等。
(2)有关访问程序状态的指令 如对程序状态字(PSW)的指令等。
(3)存取特殊寄存器指令 如存取中断寄存器、时钟寄存器等指令。
(4)其他指令
并行与并发
并发:两个或多个事件在同一时间间隔内发生
并行:两个或多个事件在同一时刻发生
OS与用户接口
用户接口(User Interface,简称UI)是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。通常指软件接口,一般有命令接口、程序接口、图形接口三种。
用户接口可分为三个部分:
1. 命令接口:用户可以通过命令接口向系统发出字符命令,及时地与自己的作业交互,控制作业的运行。该接口又可以进一步分为联机命令接口和脱机命令接口两种。
(1)联机命令接口:是最常用的一种用户接口。是为联机用户提供的。由一组键盘命令和命令解释程序组成。
(2)脱机命令接口:为批处理用户提供的,由一组作业控制语言语句组成。
(为了便于用户直接或间接控制自己的作业,操作系统向用户提供了命令接口。命令接口是用户利用操作系统命令组织和控制作业的执行或管理计算机系统。命令是在命令输入界面上输入,由系统在后台执行,并将结果反映到前台界面或者特定的文件内。命令接口可以进一步分为联机用户接口和脱机用户接口。)
2. 程序接口:该接口是为用户程序在执行过程中访问系统资源而设定的,是用户程序取得操作系统服务的唯一途径,用户只能在程序里使用。
(程序接口由一组系统调用命令组成,这是操作系统提供给编程人员的接口。用户通过在程序中使用系统调用命令来请求操作系统提供服务。每一个系统调用都是一个能完成特定功能的子程序。如早期的UNIX系统版本和MS-DOS版本。)
3. 图形接口:图形用户接口采用了图形化的操作界面,用非常容易识别的各种图标来将系统各项功能、各种应用程序和文件,直观、逼真地表示出来。用户可通过鼠标、菜单和对话框来完成对应程序和文件的操作。图形用户接口元素包括窗口、图标、菜单和对话框,图形用户接口元素的基本操作包括菜单操作、窗口操作和对话框操作等。
往往在需求分析中,需要详细解释用户接口所能预期实现的样板,并且能让用户与计算机实现简单方便的连接。
一些层次结构
1、操作系统的作用:
(1)计算机系统资源的管理者
(2)用户与计算机硬件之间的接口
(3)扩充机器(通常把覆盖了软件的机器称为扩充机器或虚拟机,它是对裸机的抽象和功能扩充)。
2、操作系统的类型
(1)批处理操作系统
(2)分时操作系统
(3)实时操作系统
(4)单用户操作系统
(5)网络操作系统
(6)分布式操作系统
3、操作系统的特征
(1)并发性
(2)共享性
(3)虚拟性
(4)异步性
4、操作系统与用户的接口
(1)命令接口
(2)程序接口
(3)图形用户接口
5、操作系统的结构
(1)整体式系统
(2)层次式系统
(3)虚拟机系统
(4)客户-服务器系统
一些常识类
一、macOS和windows
windows: Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。
Windows采用了图形化模式GUI,比起从前的DOS需要键入指令使用的方式更为人性化。随着电脑硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位、32位再到64位, 系统版本从最初的Windows 1.0 到大家熟知的Windows 95、Windows 98、Windows ME、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10 和 Windows Server服务器企业级操作系统,不断持续更新,微软一直在致力于Windows操作系统的开发和完善。
macOS: Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。Mac OS是首个在商用领域成功的图形用户界面操作系统。现行的最新的系统版本是OS X 10.12 ,且网上也有在PC上运行的Mac系统,简称 Mac PC。
Mac系统是基于Unix内核的图形化操作系统;一般情况下在普通PC上无法安装的操作系统。由苹果公司自行开发。苹果机的操作系统已经到了OS 10,代号为MAC OS X(X为10的罗马数字写法),这是MAC电脑诞生15年来最大的变化。新系统非常可靠;它的许多特点和服务都体现了苹果公司的理念。
macOS如何从PowerPC迁徙到X86?
1、 首先,我们应该了解RISC和CISC
随着计算机系统的复杂,要求计算机指令系统的构造能使计算机的整体性能更快更稳定。最初,人们采用的优化方法是通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统实现,以此来提高计算机的执行速度,这种计算机系统就被称为复杂指令系统计算机,即Complex Instruction Set Computer,简称CISC。另一种优化方法是在20世纪80年代才发展起来的,其基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序来实现,这种计算机系统就被称为精简指令系统计算机.即Reduced Instruction Set Computer,简称RISC。RISC技术的精华就是通过简化计算机指令功能,使指令的平均执行周期减少,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度
2、 MAC的power pc芯片是RISC(精简指令集);PC机是CISC(复杂指令集)
3、 于2005年6月6日,史蒂夫·乔布斯在苹果每年的全球开发者大会中发表演说,表示接下来的两年间苹果将会从 PowerPC 转换到 Intel 的微处理器,而且在这个转变的期间,OS X 都会支援两种平台。对于 PowerPC 平台的支援会一直持续到 10.5 版,但是同时支援两种平台多久的时间并不清楚(Mac OS 对于 Motorola 68k 架构的支援一直持续到 PowerPC 系统推出后的约四年)。新版的 Xcode 支援建造 通用二元程序码(Universal Binaries),可以在两种架构执行。PowerPC 程序码在 Intel 为基础的 Mac 会使用称为 Rosetta 的模拟器来提供支持。
4、 对于老的powerpc程序,苹果提供了一个名叫Rosetta的模拟器,可以将用户程序翻译成X86指令。另外,苹果系统里面的所有系统库,苹果也都同时提供了powerpc版本来供powerpc程序调用。所以那些老的powerpc程序可以直接在intel的机器上运行。jobs当时演示了ps, word等程序,性能都完全可以接受。Rosetta模拟器直到2011年的OS X 10.7才被彻底移除。模拟器还只是无奈之举。苹果还呼吁开发者尽快对程序进行重新编译。为了方便程序移植,苹果推出了新的技术-通用二进制程序(universal binary)。其实就是在一个程序包里面同时提供X86平台和powerpc平台的二进制码。由系统自行检测和判断该运行那部分程序。这样一个程序无论在哪个平台都可以原生运行了。而对于开发人员而言,Xcode的编译选项里面有一个生成intel代码和生成powerpc代码的选项,开发人员只需要打两个勾,然后编译一遍就可以了。简直再简单不过了。后来OS X 10.5的时候苹果还提出了四架构二进制概念,同时对应intel和powerpc的32位和64位版本。以方便第三方程序向64位迁移。
《乔布斯传》里提到盖茨是这样评价的:比尔盖茨对此感到惊奇。他对于设计色彩花哨的电脑机箱并无兴趣,但是秘密换掉电脑内部的CPU,并能按时无缝完成,这是他真正钦佩的壮举。多年后我采访盖茨,提起乔布斯的成就,他告诉我:“如果你说,好,我们现在要换掉微处理器芯片,但是一拍都不能落下,这听起来是不可能的,但是他们基本做到了。”
二、手机上的OS
1、智能手机
智能机与非智能机的区别主要看能否基于系统平台的功能扩展。手机操作系统一般只应用在智能手机上。目前,在智能手机市场上,中国市场仍以个人信息管理型手机为主,随着更多厂商的加入,整体市场的竞争已经开始呈现出分散化的态势。从市场容量、竞争状态和应用状况上来看,整个市场仍处于启动阶段。
2、手机上常见的OS
目前应用在手机上的操作系统主要有Android(谷歌)、iOS(苹果)、windows phone(微软)、Symbian(诺基亚)、BlackBerry OS(黑莓)、windows mobile(微软)等。
按照源代码、内核和应用环境等的开放程度划分,智能手机操作系统可分为开放型平台(基于Linux内核)和封闭型平台(基于UNIX 和Windows 内核)两大类。
3、一些基于android的OS
Smartisan OS: 由罗永浩带领的锤子科技团队基于Android深度定制的手机操作系统。
IUNI OS: IUNI OS最早的内部代号叫Aurora, 英文里的“极光”一词。负责人刘世超表示,IUNI OS中的OS主要是指“OUR SERVICE”,其本义是通过深度定制的安卓操作系统,为用户提供独特的体验与服务。
HTC Sense: HTC自主研发的Sense,是一款基于Android系统研发的智能手机系统。
LG Optimus: 基于标准Android修改的LG Optimus系统
CyanogenMod: CyanogenMod是一个基于开源Android系统,供某些手机使用的二级市场固件。它提供一些在官方Android系统或手机厂商没有提供的功能。
MIUI: MIUI是小米公司旗下基于Android系统深度优化、定制、开发的第三方手机操作系统,能够带给国内用户更为贴心的Android智能手机体验。
Emotion UI: Emotion UI是华为基于Android进行开发的情感化用户界面。
Blur: Blur是摩托罗拉(Motorola)基于谷歌Android平台开发的应用界面,除了基本的Android特性之外,Blur最突出的特色是注重网络社交功能。
Flyme OS: 魅族手机操作系统。
百度云: 百度云智能终端平台是深度整合了百度核心技术与服务的智能终端软件平台。
中国移动OMS: Open Mobile System是中国移动通讯集团和Google合作联合开发的一款基于Linux内核Android平台构建的开放式手机操作系统简称OMS,它在原有Android平台基础上针对中国市场做了特殊优化,加入了中移动运营的3G网络TD-SCDMA的支持。
4、其他OS
Brew: CDMA之父高通公司开发的封闭式系统,安装软件极为艰难,常见在500元以下的CDMA手机有QQ。
Linux: Linux系统是一个源代码开放的操作系统,已经有很多版本流行。但尚未得到较广泛的支持。
Palm OS: 这是一种32位的嵌入式操作系统,主要运用于移动终端上。
HP WebOS: HP webOS是一个嵌入式操作系统,以Linux内核为主体并加上部份Palm公司开发的专有软件。
阿里云OS: 阿里云OS是融云数据存储、云计算服务和云操作系统为一体的新一代操作系统。系统搭载了阿里云公司自主设计、架构、研发的系统核心虚拟机,增强了云端服务的能力,并提供与Dalvik虚拟机兼容的运行环境。
MeeGo: MeeGo是诺基亚和英特尔宣布推出一个免费手机操作系统,中文昵称米狗,该操作系统可在智能手机、笔记本电脑和电视等多种电子设备上运行,并有助于这些设备实现无缝集成。
Firefox OS: 是由谋智公司(Mozilla Corporation)主导研发的开放源代码移动操作系统,采用Linux核心,应用于智能手机。采用开放网络(open Web)技术,它是一种网络作业环境,以Gecko浏览器引擎为核心,采用HTML5来开发。所有应用都基于网络,希望用户一开机就能够连接上互联网,但也可通过HTML5 cache Manifest或相关API在脱机时使用。
BADA系统: bada是韩国三星电子自行开发的智能手机平台,底层为Linux核心。支援丰富功能和用户体验的软件应用,于2009年11月10日发布。bada在韩语裏是“海洋”的意思。
Tizen系统: Tizen是英特尔MeeGo系统与三星LiMo系统的混合体。
Ubuntu: 开源操作系统开发商Canonical于2013年1月3日凌晨正式发布了Ubuntu手机操作系统,这标志着Ubuntu正式进入移动操作系统领域。它回避了iOS的应用网格设计理念,而在一定程度上借鉴了安卓和Windows Phone 8的优点,用户可以从屏幕边缘滑动打开常用的程序并进行切换,不过,相对于其他操作系统来说,Ubuntu的整体使用体验更为宽阔,很显然设计人员已经将屏幕尺寸和设备便携性等问题考虑进去了。
三、何谓服务器?服务器上装什么OS?
服务器:
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。服务器OS:
Windows Server: 重要版本Windows NT Server 4.0、Windows 2000Server、Windows Server 2003、Windows Server 2003 R2、Windows Server 2008 、Windows Server 2008 R2 、Windows Server 2012。Windows服务器操作系统派应用,结合.NET开发环境,为微软企业用户提供了良好的应用框架。
Netware: 在一些特定行业和事业单位中,NetWare优秀的批处理功能和安全、稳定的系统性能也有很大的生存空间。NetWare常用的版本有Novell的3.11、3.12、4.10、5.0等中英文版。
Unix: Unix服务器操作系统由AT&T公司和SCO公司共同推出,主要支持大型的文件系统服务、数据服务等应用。市面上流传的主要有SCO SVR、BSD Unix、SUN Solaris、IBM-AIX、HP-U、FreeBSDX 。
Linux: Linux操作系统虽然与UNIX操作系统类似,但是它不是UNIX操作系统的变种。Torvald从开始编写内核代码时就仿效UNIX,几乎所有UNIX的工具与外壳都可以运行在LINUX上。
四、微内核
微内核(Micro kernel)是提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口,如DOS、Workplace OS、Workplace UNIX等。IBM、Microsoft、开放软件基金会(OSF)和UNIX系统实验室(USL)等新操作系统都采用了这一研究成果的优点。
像Mach和Nucleus这样的微内核操作系统,使用户可以自己选择操作系统的接口和特性。它们十分适合可以选择多处理器和多操作系统的变化的计算机市场,开发商也可从中受益。它们能够很快地从一个系统向另一个系统移植他们的产品,使最终用户可以得到许多应用产品。这种模块化的设计也保证了可以得到大量的可选服务。宏内核与微内核的区别:
宏内核: 简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等都在内核里面。优点是效率高。缺点是稳定性差,开发过程中的bug经常会导致整个系统挂掉。做驱动开发的应该经常有按电源键强行关机的经历。
微内核: 内核中只有最基本的调度、内存管理。驱动、文件系统等都是用户态的守护进程去实现的。优点是超级稳定,驱动等的错误只会导致相应进程死掉,不会导致整个系统都崩溃,做驱动开发时,发现错误,只需要kill掉进程,修正后重启进程就行了,比较方便。缺点是效率低。典型代表QNX,QNX的文件系统是跑在用户态的进程,称为resmgr的东西,是订阅发布机制,文件系统的错误只会导致这个守护进程挂掉。不过数据吞吐量就比较不乐观了。
其实内核就是一个运行在ring0(最高)级别的程序片段,它能完成ring3(用户态)不能完成的一些功能。用下图可以较好理解这两者的区别:
五、虚存不足的警告的解释
可能原因:
1、虚拟内存设置不当
2、感染病毒
3、SYSTEM用户权限设置不当
4、系统空间不足
如果在系统运行良好、无病毒感染、内存充足的状态下提示虚存不足说明计算机硬盘分区空间不足。