设为首页 加入收藏

TOP

操作系统笔记
2017-10-11 14:04:16 】 浏览:292
Tags:操作系统 笔记

操作系统笔记

1、批处理、分时、实时是操作系统的三种基本类型

2、分布式系统是由若干个计算机经互连网络连接而成的,这些计算机既可以独立工作,又能协同工作。可实现系统内的资源管理,任务动态分配,并能并行地运行分布式程序。
分布式系统是网络操作系统的更高级的形式并保持了网络操作系统的全部功能。

3、核心态和用户态
核心态(系统态):可以执行一切指令,访问所有寄存器和内存区域;通常,操作系统内核运行在该状态下。
用户态:只可以执行部分指定指令,访问指定的寄存器和内存区域;通常,用户的程序运行在该状态下。

4、进程控制块(Process Control Block, PCB),PCB 是程序并发执行的基石!保护之前进程的现场信息。

5、原语:是机器指令的延伸,由若干条机器指令构成,用以完成特定功能的一段程序。
原语和机器指令类似,其特点是执行过程中不允许被中断;原语的执行是顺序的而不可能是并发的。
原语是原子操作,要么全做,要么全部不做。

6、进程家族树是一棵有向树(如下图),结点代表进程。一棵树表示一个家族,根结点为该家族的祖先(Ancestor)。PCB中设置有家族关系的表项。
子进程可以继承父进程所拥有的资源。
在撤消父进程时,子进程也必须被撤消。

在Linux中的僵尸进程和孤儿进程。

7、进程控制原语 

创建、撤消进程以及完成进程各状态之间的转换。由具有特定功能的原语完成。
进程创建原语
进程撤消原语
阻塞原语
唤醒原语
挂起原语
激活原语

8、创建原语(Creation)

创建原语:就是系统为进程创建一个进程控制块PCB,并填写PCB中相应信息项的过程。

9、进程创建(Create)流程图

10、进程创建(Create)程序

 1 #include <stdio.h>
 2 void main(int argc, char *argv[]){
 3     int pid;
 4         /* 调用fork()创建一个子进程 */
 5        pid=fork();
 6          if (pid<0){ /* 创建失败了! */
 7              fprintf(stderr,”Fork failed”);
 8                  exit(-1);
 9         }
10      if (pid==0) { /* child process */
11           printf (“我是子进程 \n\n”); 
12     }
13         else  {/* parent process */
14         printf(“我是父进程 \n\n”);
15     }
16     return 0;}

11、进程挂起与阻塞有什么不同?

进程的挂起: 系统在超过一定的时间没有任何动作。 
进程的阻塞:进程因等待某一件事情(如等待I/O设备)而暂时不能运行的状态,此时即使处理机空闲,进程也无法使用。系统中处于阻塞态(又称封锁态、等待态、睡眠态)的进程也可以有多个。

进程的组成
程序: 描述了进程所要完成的功能。 是进程存在的物质基础。
数据: 是程序加工的对象。
进程控制块PCB:用来描述进程的一切静态和动态的特征,操作系统只能通过它来感知和管理进程。每个进程都有且仅有一个进程控制块。
进程控制块的内容:PCB的具体内容随不同系统而异,一般包括以下信息:
· 进程标识: 唯一地标识进程的名称或代码
· 进程状态: 标识进程是运行态、就绪态或阻塞态
· 进程实体: 指示进程的程序部分和数据部分在存储器中的位置和大小
· 调度信息(优先数): 确定就绪进程转为运行进程的优先级
· 资源信息: 描述内存占用、外设占用等信息
· 现场信息: 包括程序计数器、程序状态字、累加器、变址寄存器的当前值
· 进程通信信息:用于进程间的通信

12、进程挂起、阻塞、睡眠的区别

阻塞:是进程在等待某种资源,但是不能马上得到,,必须等待别的进程释放资源才能继续,属于被动无法得到时间片,内核就切换其它进程运行
休眠:一般为主动式的放弃一段CPU时间
挂起:是运行时间片到了,内核要调度其它进程运行,被动式的失去CPU

 13、信号量: 

信号量: 1965年,由荷兰学者Dijkstra提出的一种特殊整型变量。
信号量定义:1个数据结构+2个基本操作
struct semaphore
{
int value; //记录唤醒操作个数
PCB *queue;//等待在该信号量上的进程
}
P(semaphore s); //消费唤醒操作
V(semaphore s); //产生唤醒操作
P的名称来源于荷兰语的proberen,即test
V的名称也来源于荷兰语verhogen(increment)

14、互斥与同步的区别

同步是一种更为复杂的互斥,而互斥是一种特殊的同步。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:合作进程之间协调彼此的工作,控制自己的执行速度 ,由此产生的相互合作,相互等待的制约关系,即操作是有序的。

15、AND信号量

AND信号量:为解决并行带来的死锁问题,在wait 操作中引入AND 条件,其基本思想是将进 程在整个运行过程中所需要的所有临界资源,一次性地全部分配给进程,用完后一次性释放。对若干个临界资源的分配,采取原子操作方式:要么全部分配到进程,要么一个也不分配。

用信号量解决了很多同步和互斥问题,但在解决问题的过程中,我们也发现还存在一些问题,如:
- 在生产者和消费者问题中两个P操作的位置不能颠倒;
- 哲学家进餐问题中的死锁现象等。
这些问题的出现促使AND信号量的产生

16、管程

管程 (英语:Monitors,也称为监视器) 是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享资源。这些共享资源一般是硬件设备或一群变量。
管程实现了在一个时间点,最多只有一个线程在执行管程的某个子程序。与那些通过修改数据结构实现互斥访问的并发程序设计相比,管程实现很大程度上简化了程序设计。

17、操作系统概念管程、管道、通道什么区别!

1、通道命令
- 通道命令
        规定设备的操作,每一种通道命令规定了设备的一种操作,通道命令一般由命令码/数据/主存地址/传送/字节个数及标志码等部分组成。
- 通道程序
        是一组通道命令规定通道执行一次输入输出操作应做的工作,这一组命令就组成了一个通道程序。
2、管道机制
  把第一条命令的输出作为第二条命令的输入,如此进行连接的技术。
3、管程
  代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成了一个操作系统的资源管理模块,我们称之为管程。
18、进程的同步与通信

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇System Error. Code:1722. RPC服.. 下一篇C语言第一次作业

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目