操作系统(Operating System,简称OS),是管理计算机硬件与软件资源的计算机程序。
操作系统基本分为三类:批处理系统、分时操作系统、实时操作系统。
50年代,人们用晶体管代替电子管,制造出了第二代计算机。当时计算机是很昂贵的设备,为了充分发挥计算机的效能,让它不停工作,就出现了批处理系统。把任务都输入磁带,让计算机读入一条任务,就开始执行,完成后,再依次读入下一条任务,直到全部处理完。这就是第一代操作系统--批处理系统。这种系统基本没有用户交互。这种系统一般只有商业、军事、工业行业在用。
大约在1970年,Ken Thompson为了给自己编的游戏Space Travel找个运行环境,测试了多个系统,感觉都不爽。干脆就自己开发了一个,这就是初版的Unix。1970后,贝尔实验室内部就开始流行用这个。后来,Thompson的同事Dennis Ritchie,觉得编程语言不好用,就搞出个C语言。1973年,Unix就用C重写了,大大提高了开发效率。就是这个Unix,奠定了现在分时操作系统基础。此后的系统,多少都参照了Unix的特征。
后来,美国国防部,把TCP/IP、Unix、C语言打包,由AT&T发布给各大学,用于非商业用途。
基于这条路线,出现了Sun Solaris、IBM AIX、HP-UX等商业版本,还有FreeBSD这种免费版本。
Unix系统一般用于专用的机器,而且人机交互不友好,普通人很少见到。
至于后代子孙,著名的苹果操作系统(包括桌面与手机),就是基于FreeBSD发展来。
1991年,在大学读书的Linus Torvalds,感觉教学使用的Minix很烂,就自己开发了1万行代码的系统核心,并且开源出来。
从此世上有了一个开源的玩具Linux,通过30年发展,基于Linux核心的系统门派林立。比如现在的手机Android系统就是基于Linux,还有桌面Ubuntu、RedHat。。。
1980年,微软购买了QDOS操作系统,修改后,命名为MS-DOS,随IBM的pc机器一起销售。最早IBM并没看好这个市场,没想到个人机器发展迅猛。MS-DOS以及其后的Windows9x系统,成为了个人机操作系统的霸主。
后来,IBM与微软合作开发OS/2系统,因为分歧,双方各自独立发展。微软的OS/2,称为Windows NT,针对商业客户。2001年,windows XP面世,NT技术正式用于一般消费市场。直到今天的windows10,使用的内核也是基于NT。
上面说的操作系统,基本都被称作分时操作系统。
就是将CPU时间分成一段段,称为时间片(Time Slice,一般取100ms以下),哪个任务获得了时间片,就获得了在此段时间使用cpu的权利,由于计算机cpu时间片段很短,对于人类的日常应用,感觉上计算机在同时做几件事。
分时系统,人们最熟悉,也称为通用市场,2020年5月的市场占有率来看,windows系统占有绝对优势。
实时操作系统(RTOS),主要用于嵌入式设备,专业或工业用途为主。比如一枚导弹,使用的肯定不会是windows系统,死机了重启,都需要十几秒,导弹都不知道飞哪去了!!!
主要特点如下:
1)高精度计时系统
计时精度是影响实时性的一个重要因素。经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。
2)多级中断机制
一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
3)实时调度机制
实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。
实时操作系统比较著名的有:uc/OS、FreeRTOS、vxWorks,国产的RT-Thread使用的也不少。