1.计算机系统与操作系统
计算机系统:由硬件和软件相互交织形成的集合体,构成一个解决计算问题的工具。
硬件:计算机物理装置本身,可以是电子的、磁的、机械的、光的元件或装置。
软件:指计算机系统中的所有软件。
硬件是软件运行的物质基础,软件能够充分地发挥硬件潜能并扩充其功能,完成各种应用任务,两者互相促进,相辅相成,缺一不可。
操作系统与驱动程序:
- 操作系统必须能驱动硬件,如此应用程序才能使用该硬件功能;
- 一般来说, 操作系统会提供开发接口,让开发商制他们的驱动程序;
- 要使用新硬件功能,必须安装厂商提供的驱动程序才行;
- 驱动程序是由厂商提供的,与操作系统开发者无关。
操作系统与应用程序:
应用程序是参考操作系统提供的开发接口所开发出来软件,这些软件可以让用户操作,以达到某些计算机的功能利用。
操作系统:
- 软件系统的核心,各种软件的基础运行平台;
- 提供共性功能,与硬件相关,与应用领域无关。
- 没有安装操作系统的计算机,通常被称为裸机,如果想在裸机上运⾏⾃⼰所编写的程序,就必须⽤机器语⾔书写程序;
- 如果计算机上安装了操作系统,就可以在操作系统上安装⽀持的⾼级语⾔环境,⽤⾼级语⾔开发程序。
虚拟机=裸机+操作系统
- 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运⾏在⼀个完全隔离环境中的完整计算机系统
- 虚拟系统通过⽣成现有操作系统的全新虚拟镜像,具有真实操作系统完全⼀样的功能
- 进⼊虚拟系统后,所有操作都是在这个全新的独⽴的虚拟系统⾥⾯进⾏,可以独⽴安装运⾏软件,保存数据,拥有⾃⼰的独⽴桌⾯,不会对真正的系统产⽣任何影响
- ⽽且能够在现有系统与虚拟镜像之间灵活切换的⼀类操作系统
2.操作系统资源管理技术
2.1资源复用:解决物理资源数量不足
空分复用共享
资源分割成多个更小的分配单元,供进程使用 。
时分复用共享
资源以整体为分配单元,在一个时段内供一个进程独占使用。分为以下两种:
时分独占式:进程获得时分独占式资源后,对资源执行多个操作,通常使用一个完整的周期后才会释放(如磁带)。
时分共享式:指进程占用该类资源使用后,很可能随时被剥夺,被另一个进程抢占使用(如处理器、磁盘机)。
2.2资源虚拟:解决物理资源数量不足 ,提高服务的能力和水平
一种资源转化、模拟或整合技术,可将物理上的一个资源变成逻辑上的多个对应物(或物理上多个变成逻辑上一个) 。
空分复用:分割实际存在的物理资源;
虚拟:实现假想的虚拟同类资源。
资源虚拟例子:虚拟设备、虚拟主存、虚拟文件、虚拟屏幕(终端)、虚拟信道 。
虚拟技术把一个物理实体转换为多个逻辑实体。
主要有两种虚拟技术:时分复用技术和空分复用技术。
多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。
虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间和物理内存使用页进行交换,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。
2.3资源抽象:处理系统的复杂性,解决资源的易用性
资源抽象用于处理系统的复杂性,重点解决资源的易用性。
资源抽象:指通过创建软件来屏蔽硬件资源的物理特性和接口细节,简化对硬件资源的操作、控制和使用的一类技术。
单级资源抽象与多级资源抽象。
2.4组合使用
对于一类资源,操作系统往往同时实施几种资源管理技术。
例1 :虚拟设备--抽象+虚拟。
例2:虚拟主存--复用+虚拟。
例3:虚拟屏幕--抽象+虚拟。
2.5操作系统中三个基础抽象
进程
进程(process):进程是处理器的一种抽象,进程是对于进入内存的执行程序在处理器上操作的状态集的一个抽象。进程抽象的效果是让用户感觉到有自己独享的处理器,从而,可为用户提供多任务操作系统和分时操作系统。
虚存
虚 存(virtual memory) :虚存是内存的一种抽象,虚存抽象的效果是给用户造成假象,感觉独占了一个连续地址空间,编写应用程序的长度不受物理内存大小限制。虚存是通过结合对内存和外存的管理来实现的,把一个进程的虚存中的内容存储在磁盘上,用内存作为磁盘的高速缓存,以此为用户提供比物理内存空间大得多的虚拟内存空间。
文件
文件(file):文件是设备的一种抽象,文件是通过将文件中的字节映射到存储设备的物理块中来实现文件抽象。文件抽象的效果是让用户感觉到总能满足自己对设备上信息的存取需求,而且使用十分方便。
进程和线程
进程定义
进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位。
进程是一个既能用来共享资源,又能描述程序并发执行过程的系统基本单位。
进程是一种支持程序执行的系统机制。
操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率。
进程概念的引入原因
1.刻画程序的并发性
- 程序是并发执行的,不是连续而是走走停停的。程序的并发执行引起资源共享和竞争问题,执行的程序不再处在封闭环境中。
- “程序”自身只是计算任务的指令和数据的描述,是静态概念无法刻画程序的并发特性,系统需要寻找一个能描述程序动态执行过程的概念,这就是进程
2.解决资源的共享性
- “可再用” 程序:指在调用它的程序退出之前不允许其他程序调用的程序。被调用过程中可以有自身修改。
- “可再入” 程序:指能够被多个程序同时调用的程序。纯代码,在执行过程中不被修改。
- 程序的可再入性使程序与程序的执行不再一一对应。程序概念不能描述这种共享
“可再入” 程序举例:
进程的属性
- 动态性:进程是程序在数据集合上的一次执行过程,是动态概念;而程序是一组有序指令序列,是静态概念。进程有一个生命过程:创建、运行、等待等。进程具有动态的地址空间(数量和内容)。
- 共享性:同一程序同时运行于不同数据集合上时,构成不同的进程。
- 独立性:是系统中资源分配和保护的基本单位,也是系统调度的独立单位(单线程进程)。每个进程的地址空间相互独立。
- 制约性:并发进程之间存在着制约性,在进行的关键点上需要相互等待或互通消息。
- 并发性:各进程按各自独立的,不可预知的速度并发推进。并发和异步特性会导致程序执行的不可再现性。
进程状态和转换
进程三态模型及其状态转换
就绪 --> 运行
- 调度:调度程序选择一个新的进程运行
- 该转换可以由其他转换引起
运行 --> 就绪
- 运行进程用完了时间片
- 运行进程被中断,因为一高优先级进程处于就绪状态
- 该转换可以引起其他转换发生
运行 --> 等待
- 当一进程必须等待某事件发生,比如:
OS尚未完成服务;
对一资源的访问尚不能进行;
初始化I/O 且必须等待结果;
等待某一进程提供输入 (IPC);
- 可以引起其他转换发生
等待 --> 就绪
- 当所等待的事件发生时
进程五态模型及其状态转换
具有挂起功能的进程状态及其转换

挂起进程具有如下特征:
- 该进程不能立即被执行。
- 挂起进程可能会等待事件,但所等待事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。
- 进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。
- 结束进程挂起状态的命令只能通过操作系统或父进程发出。
线程的定义
- 引入线程是为了把进程的两项功能--“独立分配资源”与“被调度分派执行”分离开来。
- 进程作为系统资源分配和保护的独立单位,不需要频繁地切换;
- 线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。
操作系统中引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。
优点:
- 1.快速线程切换
- 2.通信易于实现
- 3.减少管理开销
- 4.并发程度提高
进程与线程结构关系
进程
进程是操作系统中除处理器外进行的资源分配和保护的基本单位。
它有独立的虚拟地址空间,容纳进程映像(如与进程关联的程序与数据),并以进程为单位对各种资源实施保护,如受保护地访问处理器、文件、外部设备及其他进程(进程间通信)。
线程
线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。
线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。
线程组成
(1)线程唯一标识符及线程状态信息(运行态、就绪态、阻塞态和终止态);
(2)线程是一条执行路径,有独立的程序计数器;未运行时保护线程上下文。
(3)线程有执行栈和存放局部变量的私用存储空间。
(4 )可访问所属进程的内存和资源,并与该进程中的其他线程共享这些资源。
线程又称轻量进程,线程运行在进程的上下文中,并使用进程的资源和环境。系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程。
线程状态有:运行、就绪、等待和终止,状态转换也类似于进程。
挂起状态对线程是没有意义,如果进程挂起后被对换出主存,则它的所有线程因共享进程的地址空间,也必须全部对换出去。
做个简单的比喻:进程=火车,线程=车厢
- 线程在进程下行进(单纯的车厢无法运行)
- 一个进程可以包含多个线程(一辆火车可以有多个车厢)
- 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)
- 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)
- 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)
- 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
- 进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
- 进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-"互斥锁"
- 进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”
3.操作系统主要功能
3.1处理机功能
(1)进程控制和管理
(2)进程同步和互斥;
(3)进程通信;
(4)进程死锁;
死锁:死锁是指系统中的一组进程,由于竞争系统资源或由于彼此通信而永远阻塞,称这些进程处于死锁状态。死锁的产生是与资源分配策略和并发进程执行的速度有关。
死锁的必要条件:
- 互斥条件:一个资源一次只能被一个进程所使用。
- 不可抢占条件:一个资源仅能被占有它的进程所释放,而不能被其他的进程强行抢占。
- 部分分配条件:一个进程已占有分给它的资源,但仍然要求其他资源。
- 循环等待条件:在系统中存在一个由若干个进程形成的环形请求链,其中的每一个进程均占有若干种资源中的某一种,同时还要求下一个进程所占有的资源。
避免死锁:银行家算法
银行家(操作系统)拥有一笔周转资金(操作系统管理的资源),客户(进程)要求分期贷款,如果客户能够得到各期贷款,就一定能够归还贷款,否则就一定不能归还贷款。银行家应谨慎的贷款,防止出现坏帐。
(5)线程控制和管理;
(6)处理器调度,又分高级调度,中级调度和低级调度
3.2存储管理
(1)内存分配 ;
(2)地址转换;
(3)存储保护;
(4)内存共享 ;
(5)存储扩充
3.3设备管理
(1)提供设备中断处理;
(2)提供缓冲区管理;
(3)提供设备独立性,实现逻辑设备到物理设备之间的映射;
(4)设备的分配和回收;
(5)实现共享型设备的驱动调度;
(6)实现虚拟设备
3.4文件管理
(1)提供文件的逻辑组织方法;
(2)提供文件的物理组织方法;
(3)提供文件的存取和使用方法;
(4)实现文件的目录管理;
(5)实现文件的共享和安全性控制;
(6)实现文件的存储空间管理
3.5网络与通信管理
(1)网络资源管理;
(2)数据通信管理;
(3)网络应用服务;
(4)网络管理
4.操作系统主要特性
4.1并发性
并发性--指两个或两个以上的事件或活动在同一时间间隔内发生。
发挥并发性能够消除系统中部件和部件之间的相互等待,有效地改善系统资源的利用率,改进系统的吞吐率,提高系统效率。
并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
实现并发技术的关键之一是如何对系统内的多个活动(进程)进行切换的技术。
并行性:指两个或两个以上的事件或活动在同一时刻发生。
并行的事件或活动一定是并发的,但反之并发的事件或活动未必是并行的。
并行性是并发性的特例,而并发性是并行性的扩展。
并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。
并行需要硬件支持,如多流水线或者多处理器。
操作系统通过引入进程和线程,使得程序能够并发运行。
4.2共享性
指操作系统中的资源可被多个并发执行的进程所使用。
资源共享两种方式:
透明资源共享:使用虚拟和抽象技术,注意资源隔离与授权访问
独占资源共享:临界资源与独占访问
共享是指系统中的资源可以被多个并发进程共同使用。
有两种共享方式:互斥共享和同时共享。
互斥共享的资源称为临界资源,例如打印机等,在同一时间只允许一个进程访问,需要用同步机制来实现对临界资源的访问。
4.3异步性
指系统中的各种事件的发生具有随机性。
异步性给系统带来潜在危险,有可能导致与时间有关的错误。操作系统的一个重要任务是必须确保捕捉任何一种随机事件,正确处理可能发生的随机事件,正确处理任何一种产生的事件序列,否则将会导致严重后果。
多种操作系统:
异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。
5.操作系统内核
内核(kernel)是作为可信软件来提供支持进程并发执行的基本功能和基本操作的一组程序模块。
内核通常驻留在内核空间,运行于核心态,具有访问硬设备和所有主存空间的权限,是仅有的能执行特权指令的那部分程序。
在内核的支撑下,机器功能得到扩展、进程运行环境得到改善,安全性得到保证,系统效率得到提高。

内核的功能
6.常见流行的操作系统
桌面操作系统:
- MS DOS,MS Windows 3.x,Windows 95, Mac OS ,Windows XP,Windows Vista,Windows 7/8/10,Linux,
服务器操作系统:
- Windows NT,Windows 200X,UNIX,Novell Netware,OS/2,Linux
嵌入式操作系统:
- Windows CE、PalmOS,UcLinux,UCOS 2,
- VxWorks,pSOS ,QNX,Windows Mobile
- Symbian, Andriod
7.Linux操作系统
7.1Linux内核、发行版本
内核(kernel)是系统的⼼脏,是运⾏程序和管理像磁盘和打印机等硬 件设备的核⼼程序,它提供了⼀个在裸设备与应⽤程序间的抽象层
Linux 内核版本⼜分为稳定版和开发版,两种版本是相互关联,相互循环
稳定版:具有⼯业级强度,可以⼴泛地应⽤和部署。新的稳定版相 对于较旧的只是修正⼀些 bug 或加⼊⼀些新的驱动程序
开发版:由于要试验各种解决⽅案,所以变化很快
内核源码⽹址:http://www.kernel.org
Linux 发行版(也被叫做 GNU/Linux 发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件常见的发行版本如下:
- Ubuntu
- Redhat
- RedHat Openshift
Openshift是红帽的云开发平台即服务(Paas)。自由和开放源码的云计算平台使开发人员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中。Openshit广泛支持多种编程语言和框架,如Java,Ruby和PHP等,另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等,Openshift 基于一个开源生态系统为移动应用、数据库服务等提供支持。
Openshift Online服务构建在Red Hat Enterprise linux上,Red Hat Enterprise linux提供集成应用程序,运行库和一个配置可伸缩的多用户单实例的操作系统,以满足企业级应用的各种需求。 - 部署应用,查看CPU/存储器等使用情况,config feature flag,查看实时日志,起/停pod。
- RedHat Openshift
- Fedora
- openSUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- CentOS
- Arch
7.2应用领域
服务器领域
Linux 在服务器领域的应⽤是其重要分⽀,Linux 免费、稳定、⾼效等特点在这⾥得到了很好的体现。
嵌入式领域
Linux 运⾏稳定、对⽹络的良好⽀持性、低成本,且可以根据需要进⾏软 件裁剪,内核最⼩可以达到⼏百 KB 等特点,使其近些年来在嵌⼊式领 域的应⽤得到⾮常⼤的提⾼。
主要应⽤:机顶盒、数字电视、⽹络电话、程控交换机、⼿机、PDA、 等都是其应⽤领域,得到了 Google、三星、摩托罗拉、NEC 等公司的 ⼤⼒推⼴
个人桌面领域
此领域是传统 Linux 应⽤最薄弱的环节
传统 Linux 由于界⾯简单、操作复杂、应⽤软件少的缺点,⼀直被 Windows 所压制
近些年来随着 Ubuntu、Fedora 等优秀桌⾯环境的兴起,同时各⼤硬件 ⼚商对其⽀持的加⼤,Linux 在个⼈桌⾯领域的占有率在逐渐的提⾼
7.3文件和目录
文件系统是一种组织计算机存储设备文件和资料的方法,操作系统中负责管理和存储文件信息的软件机构称为文件管理系统。
windows文件系统
在 Windows 下,打开 “计算机”,我们看到的是⼀个个的驱动器盘符:
每个驱动器都有⾃⼰的根⽬录结构,这样形成了多个树并列的情形:
Linux文件系统
在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是⽂件夹 (⽬录),Ubuntu 没有盘符这个概念,只有⼀个根⽬录 / ,所有⽂件都在它下⾯:
ubuntu@VM-0-12-ubuntu:/$ ls
bin boot data dev etc home initrd.img initrd.img.old lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old
bin
可执⾏⼆进制⽂件的⽬录包含基本命令,如ls、cp、mkdir、cat等,这个目录中的文件都是可执行的。——binary
sbin
包含系统命令,如modprobe、hwclock、ifconfig等,大多是涉及系统管理的命令,这个目录中的文件都是可执行的。——system binary
boot
放置 linux 系统启动时⽤到的⼀些⽂件,如 linux 的内核⽂件: /boot/vmlinuz ,系统引导管理器: /boot/grub
dev
设备文件存储目录,应用程序通过对这些文件的读、写或是控制即可以对实际的设备进行访问或控制其动作。——devices
etc
系统配置文件目录,一些服务器的配置文件也在这里。如用户的账号和密码、系统环境变量等,busybox的启动脚本也存放在这里。——etcetera
home
系统默认的⽤户家⽬录,新增⽤户账号时,⽤户的家⽬录都存放在此⽬录下。当在终端里输入/home,其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
lib
系统库文件目录——library
media
如光驱、软驱
mnt
该目录一般是用于存放挂载存储设备的挂载目录,如有chrom等目录,可参考/etc/fstab的定义。有需要时,也可以让系统启动时自动挂载文件系统的挂载点放在该目录的操作都是允许的。——mount
opt
opt是“可选”的意思,有些第三方软件会被安装在这里。——option
proc
操作系统运行时,进程及内核信息(如CPU、硬盘分区、内存信息等)存放在这里。/proc目录为伪文件系统proc的挂载目录,proc并不是真正的文件系统,它存在于内存中。——process
/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
root
系统管理员root的家⽬录
srv
服务启动之后需要访问的数据⽬录,如 www 服务需要访问的⽹⻚数据存放在 /srv/www 内
sys
系统核心的程序
tmp
在用户运行程序时,可能会产生临时文件,/tmp就用来存放这些临时文件。——temporary
usr
该目录是系统用于存放程序的目录,例如用户命令、用户库文件等——user
- /usr/bin:存放应用程序
- /usr/share:存放共享数据
- /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
- /usr/local:存放软件升级包
- /usr/share/doc:系统说明文件存放目录
- /usr/share/man:程序说明文件存放目录
var
var表示的是变化的意思,该目录中的内容经常会变动,如/var/log下存放是的系统日志。——variety
- /var/log:随时更改的日志文件
- /var/spool/mail:邮件存放的目录
- /var/run:程序或服务启动后,其 PID 存放在该目录下