要问计算机的灵魂是啥,那肯定是操作系统。这个词现如今对大多数人都不陌生。操作系统的英文名叫Operating System,简单为OS。首先,大多数操作系统都是C语言或汇编语言开发的一系列程序组成的软件,其次,它主要的功能是控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互。
正式定义:负责管理计算机的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统的系统软件。
一、批处理操作系统
早期的计算机并没有操作系统,采用手工操作计算机,用户将与程序和数据对应的穿孔纸带装进输入机,然后启动输入机把程序和数据输入到计算机内存,接着通过控制台启动程序对数据进行运行。计算完毕后,打印输出计算结果,用户可以取走结果,并卸下纸带(或卡片)。
后来手工操作比不上机器处理的速度,造成了计算机资源的浪费,于是人们通过输入机将纸带上的作业读入到磁带上,再将磁带上的作业依次读入到内存,最后将由计算机处理数据。这时才产生了操作系统的概念,同时将这个成批自动处理作业的操作系统称为批处理操作系统。
二、分时操作系统
随着计算机的发展,出现了分时操作系统。因为计算机的本质是计算,往往人们给它安排的任务在极短的时间内就完成了,剩下的都是输入输出操作,而这些操作与输入设备和输出设备的速度有关,这时计算机处于空闲等待状态。于是,人们将CPU的时间切成一片一片的时间片,将每个极小的时间片分配给不同的任务,而这些任务来自不同的终端请求,也就是说,一台主机联接若干个终端,一台主机处理若干个终端的数据请求。假设有十个终端同时向主机发出操作请求,而且在10毫秒内都完成了该操作,在终端的视角上看,它的请求是及时得到了回复的,而在上帝视角上看,这十个终端的请求好像也是“同时”完成的,其实则不然,这只是因为主机的运算极快,主机此时将自己的时间划分成10个时间片,每个时间片只有1毫秒,所以10毫秒内服务器托管网完成了所有终端的请求。
主机很聪明,它通过时间片轮转进行调度,这是一种最古老,最简单,最公平且使用最广的算法,又称RR调度。每个进程都被分配一个时间片。这其实有点像我们有时候下馆子的场景。每次下馆子总是找人多的地儿,意味着那家餐馆比较好吃。只有一两桌的时候,通常的作法是一桌一桌的炒菜,但是人一多,点菜后,等待的时间就越长,这时老板为了避免顾客的不耐烦,就采取了一个策略,就是先把每桌的第一道炒做出来,赶紧上菜,然后再炒每桌的第二道菜,如此往复,直到炒完所有桌的所有菜单。于是,餐饮界的分时炒菜系统就诞生了。在顾客看来,他们都几乎是同时上菜的。只是两道菜之间多了一些等待,起码桌上有吃的,就不再嚷嚷了。
三、实时操作系统
批处理操作系统和分时操作系统虽然能获得较令人满意的资源利用率和系统响应时间,但是不能满足实时控制和实时信息处理的应用需求。后来,人们设计出一种在规定的时间内完成特定功能的操作系统,这能极大的确保效率,并把这样的操作系统称为实时操作系统。
实时操作系统(Real Time Operating System,简称RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。
另外,计算机系统还有网络操作系统、分布式操作系统、个人计算机操作系统、嵌入式操作系统。
四、网络操作系统
网络操作系统是使网络上各计算机能方便而有效地共享网络资源,为网络用户提供所需的各种服务的软件和有关协议的集合。
五、分布式操作系统
分布式系统是以计算机网络为基础的,它的基本特征是处理上的分布,即功能和任务的分布。分布式操作系统的所有系统任务可在系统中任何处理机上运行,自动实现全系统范围内的任务分配并自动调度各处理机的工作负载。
六、个人计算机操作系统
即PC操作系统。最早期出现的是DOS和MS-DOS操作系统,后来微软在其基础之上开发了图形操作系统windows。另外还有一个分支是Unix操作系统,由Unix又衍生出Linux操作系统。
七、嵌入式操作系统
嵌入式操作系统与嵌入式系统有关。现在市场上的仪器仪表、医疗设备、机器人、家用电器等领域硬件的控制中心其实都是由一块芯片在处理,而这个芯片被称为嵌入式的芯片。由这些微处理器芯片所构成的系统称为嵌入式系统,能够操作和管理这套硬件系统的操作系统——我们称为嵌入式操作系统。最典型的就是手机,手机就是一套嵌入式系统,像android、ios这类手机操作系统就是嵌入式操作系统。
我们介绍了形形色色的计算机,它们分处于各自的硬件时代,并成为了人与计算机之间的接口,帮助人们可以更好的操作系统的硬件。若没有操作系统,这一堆由电子管、晶体管、电子元件等构成的机器将无法启动和运行,可以说,操作系统就是计算机的灵魂。
八、操作系统的五大功能
1.处理器管理
处理器是完成运算和控制的设备。在多道程序运行时,每个程序都需要一个处理器,而一般计算机中只有一个处理器。操作系统的一个功能就是安排好处理器的使用权,也就是说,在每个时刻处理器分配给哪个程序使用是操作系统决定的。
2.存储管理
计算机的内存中有成千上万个存储单元,都存放着程序和数据。何处存放哪个程序,何处存放哪个数据.都是由操作系统来统一安排与管理的。这是操作系统的存储功能。
3.设备管理
计算机系统中配有各种各样的外部设备。操作系统的设备管理功能采用统一管理模式,自动处理内存和设备间的数据传递,从而减轻用户为这些设备设计输入输出程序的负担。
4.作业管理
作业是指独立的、要求计算机完成的一个任务。操作系统的作业管理功能包括两点尸是在多道程序运行IC现货商时,使得备用户合理地共享计算机系统资源22是提供给操作人员一套控制命令用来控制程序的运行。
5.文件管理
计算机系统中的程序或数据都要存放在相应存储介质上。为了便于管理,操作系统招相关的信息集中在一起,称为文件。操作系统的文件管理功能就是负责这些文件的存储、检索、更新、保护和共享。
九、人与计算机的距离
从图上看,最里层就是计算机硬件,与硬件最近的是操作系统,如果我们需要管理系统就直接使用操作系统即可,而如果我们要想进一步发挥计算机的效能,在计算机上办公或娱乐,我们可以使用Office、Wps办公,用QQ、微信、视频软件或游戏软件进行娱乐。这些软件我们都称为应用程序,在应用程序与操作系统之间还有一层叫语言处理程序。作为程序员,大致由此也可以分为几个层面,最外层就是应用程序开发者,然后是语言程序开发者,然后是操作系统开发者,最后是驱动程序开发者。
由操作系统而言,我们同样可以按由内到外分层进行结构说明。首先,操作系统的内核是操作系统中应用连接硬件设备的桥梁。内核仅仅是操作系统的一部分,是真正与硬件交互的那部分软件,与硬件交互包括读写硬盘、读写网盘、读写内存以及任何连接到系统中的硬件。
内核提供了一系列功能函数,由这些函数构成的集合称为系统调用,或者叫程序接口或应用编程接口(Application Programming Interface,API),名字不重要,重要的是这帮函数提供了强大的功能,因为这些函数可以管理硬件资源,并为开发人员提供良好的环境,使应用程序具有更好的兼容性。
Windows操作系统关机函数
BOOL ExitWindowsEx(
[in] UINT uFlags,
[in] DWORD dwReason
);
ExitWindowsEx就是Windows内核中的关机函数。我们通常点击Windows左下角的开始菜单 -电源-关机来实现计算机的关机,实际上是调用了这个内核级的API而已。
Shell,俗称壳,为了区别于Kernel内核。如此众多的内核函数,作为开发者或使用者,我们如何去调用它们?Shell就承担了这一功能。例如DOS下的COMMAND.COM和Windows的cmd.exe。Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
应用程序是什么?指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。它是一个独立的软件包,允许用户在移动或桌面设备上执行特定任务。应用程序通常是用不同的编程语言编写的。例如,Android 应用程序是用 Kotlin、Java和 C++ 编写的,而 iOS 应用程序是在 XCode IDE 下用 Swift 和 Objective-C 编写的。软件包编译代码、数据和资源文件以创建应用程序运行所必需的综合软件包,
我们通常意义上的软件开发,就是指这一类的应用程序开发。
应用程序安装和运行中操作系统当中,离开了操作系统,它无法运行,啥也不是。那么,世界上有Unix、Linux、Windows、Andorid、ios等操作系统,他们当中的应用程序可以相同吗?很可惜,基本不能。这就好比一个人跑到另一个国家,因为语言不通,无法生活,除非你带个翻译。Java就可以跨平台而运行,其原因就是因为它在不同的操作系统里面都有“翻译官”——JVM。C#能不能跨平台?C#原先在Windows下面有一个翻译官叫.Net Framework服务器托管网,所以由C#开发的应用程序能运行在Windows操作系统,但是,出于竞争缘由——其它操作系统没有翻译官。后来Java在某一段时间内一骑绝尘,这时微软才反应过来,再这么封闭下去,C#就没有蛋糕啦,于是赶紧开发了.Net Core,又是开源又是跨平台,希望能够亡羊补牢。
C#在其它操作系统中有了.Net Core翻译官,这时才可以跨平台了,而在Windows操作系统中,C#就有了两个翻译官,分别是旧人.Net Framework和新人.Net Core,从此新人胜旧人,.Net Framework便不再开发了,转而开发.Net Core版本。
OK,不能跑题,因为要介绍C#的翻译官——CLR,必须得另开一章了。现在讲它们还为时过早,作为立志要成为一名优秀程序员的我们,先了解一下源代码的概念,毕竟,程序员的一生都要与它打交道。我们下一节来介绍什么是源代码。
——重庆教主 2023年12月4日
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net