天天在用操作系统,但你真的造吗?
目录
一、什么是操作系统
二、操作系统的发展
三、操作系统的组成
四、操作系统如何启动
五、程序在操作系统上运行
一、什么是操作系统
一台计算机包含硬件及软件,操作系统是控制一台计算机所有操作的软件。它提供了用户可以存储和检索文件的工具,提供了用户可以请求程序执行的接口,还提供了程序执行所需要的环境,操作系统是一个大而复杂的软件包。常见的PC操作系统有:Windows系列、Mac OS系列、UNIX、Linux。常见的手机操作系统有:Android、IOS、Windows Phonoe以及已经被淘汰的Symbian。我们在日常的开发过程其实都是在开发运行在特定操作系统上的软件。如:针对Windows开发大部分开发人员使用.net开发语言。
二、操作系统的发展
操作系统发展到今天这种程序都是不断演化形成的。
a) 初始:20世纪四、五十年代,一台机器占据整个房间,甚至几个房间。执行一段程序需要大量的设备准备工作、如安装磁带、把卡片放到读卡机上、设置各种开关等。每个程序执行称为一个作业(Job),同时若干个用户需要共享一台计算机。每次,若干个作业交给计算机操作人员,这些作业形成一个批次(批处理)并逐个在计算机里执行。作业是以先进先出(FIFO)的顺序执行的。
这种方式存在的主要的缺点:程序一但交给作业队列的用户就无法与它交互。
b) 交互式处理-实时处理:为了适应这些需求,操作系统时进行了发展,操作系统允许程序通过远程终端或工作站以与用户对话的方式进行交互。这种及时的方式提供计算机服务称为实时处理。但那时计算机还比较昂贵,每台计算机必须服务于多个用户,如果操作系统在多用户的情况下,仍坚持一次只执行一个作业,那么只有一个用户会得到满意的实时服务。
c) 交互式处理-分时处理:对于实时处理,操作系统是这样设计的,操作系统使得许多作业轮流执行,这种方式把时间分为时间片,然后限制一个作业每次只能执行一个时间片的时间。在每个时间片结束后,当前作业暂时停止执行。通过这个方法快速地在各个作业之间移动,造成了若干个作业同时执行的错觉。今天,分时即用在单用户系统中,也用在多用户系统中,在单个用户系统中称为多任务,指同时可以实现多于一个任务的错觉。
d) 负载均衡与均分:在多处理器的机器中,多任务是通过把不同的任务分配给不同的处理器实现的。负载均衡是动态的把各个任务分配给各处理器,使得每个处理器都能够得到有效的使用。均分是舞台剧在的任务划分若干个子任务,与可用的处理器数目相适应。
三、操作系统的组成
操作系统主要由“外壳”和“内核”组成。外壳负责与用户进行通信,当前我们用的大部分外壳是借助“图形用户接口(GUI)”来实现这个任务的。如:要操作的对象以图形的形式表示在监视器屏幕上。用户通过鼠标定位并点击这些图标对计算机发出指令。内核则来实现计算机的基本功能。内核主要包括:文件管理程序、设备驱动程序、存储器管理程序、调度程序、调遣程序等。
四、操作系统如何启动
操作系统的启动通过一个称为引导(boot)的步骤实现的,每当我们开机时由机器执行。这个步骤会把操作系统从大容量存储器传送到主存储器中。为了保证开机时能够找到正确的指令,一部分存储器能够将内容永久保存,这种存储器称为只读存储器(ROM)。
主存储器有一部分由ROM构成,它存放引导程序。正是这个程序在计算机开机时被自动执行。
五、程序在操作系统上运行
要了解程序如何在操作系统上运行,需要理解进程与线程。
进程(Process):执行一个程序的活动。操作系统上一个最基本的概念是将一个程序和执行该程序的活动区分开来,程序是一组静态的文件,而进程是一个动态的活动,其属性会随着时间的推移而改变。一个进程包含该活动的当前状态,称为进程状态。进程是一个实体。每一个进程都有它自己的独立的地址空间,一般情况下,包括文本区域、数据区域和堆栈。
协调进程的执行有关的任务是由操作系统内核中的”调度程序”和”调遣程序”来处理的。
调度程序:维护计算机中现有的进程记录(进程池),它将新的进程放入进程池,并将已完成的进程从进程池中移除。
调遣程序:确保被调度的进程被执行。在分时系统中,把时间划分成为短的时间段,每个段称为一个时间片(通常不超过50ms),然后把CPU的注意力在进程间的切换。允许每个进程每次执行不多于一个时间片。
线程(Thead):有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。同一个进程中的多个线程之间可以并发执行,但需要硬件支持。
线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。