计算机操作系统笔记

操作系统引论

发展过程

分时系统

引入:

  • 人机交互
  • 共享主机
    解决的问题:
  1. 及时接收: 多路卡
  2. 及时处理: 各个用户的作业必须驻留在内存中,并能频繁的获得运行
  • 作业直接进入内存。
  • 采用轮转运行的方式。(引入时间片概念)

特征:多路性、独立性、及时性、交互性

实时系统

类型:

  • 工业控制系统
  • 信息查询系统
  • 多媒体系统
  • 嵌入式系统

基本特性

并发(Concurrence)

1、并行与并发

并行是指两个或多个时间在同一时刻发生,并发是指两个或多个事件在同一时间间隔内发生。

2、进程

是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令数据和堆栈组成的,是一个能独立运行的活动实体。

共享(Sharing)

  • 互斥共享方式
    • 绝大多数物理设备,栈、变量、表格
  • 同时访问方式

虚拟(Virtual)

  • 时分复用技术
    • 虚拟处理机
    • 虚拟设备
  • 空分复用技术

异步

进程的描述与控制

前趋图和程序执行

前趋图:为了能更好的描述程序的顺序和并执行情况。

顺序执行:顺序性、封闭性、可再现性

并发执行:间断性、失去封闭性、不可再现性

进程的描述

定义:

  • 进程是程序的一次执行。
  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
  • 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

信号量

含义:

信号量是一个用来实现进程同步的整型或记录型变量,除了定义初始化外,对它只能执行 wait(或P)signal(或V)这两种原子操作。

信号量的物理意义

一个信号量S通常对应于一类资源

用信号量实现互斥

为了实现进程对临界资源的互斥访问,需为每类临界资源设置一初值为 1的互斥信号量mutex。

- wait操作----申请资源 - signal操作----释放资源

管程管理

对于信号量机制,每个访问临界资源的进程自备wait、signal操作,给系统管理带来了麻烦,而且容易出现死锁。
共享变量分部到各程序中,使程序易读性差。
正确性难以保证。

基本思想

将共享资源用共享数据结构表示,用对数据结构操作的一组过程表示资源管理程序, 将共享数据结构和对它们的操作集中在一个模块中形成管程。

一个管程定义了一个数据结构和能为并发进程所执行在该数据结构上的一组操作,这组操作能同步进程和改变管程中的数据。

进程同步问题

生产者消费者问题

☞若干进程共享缓存去的同步问题

利用记录型信号量解决:

基本工作:

  • 生产者生产消息放入缓冲区
  • 消费者从缓冲区取走消息

互斥:缓冲池是临界资源,设置信号量mutex=1

同步: (生产者)有空缓冲区放产品,唤醒等待的消费者进程;无空缓冲区则阻塞。
(消费者)有产品取走,唤醒等待的生产者进程;无产品则阻塞。

实现同步需要设置两个信号量empty=n,full=0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void producer(){
producer an item nextp;
...
wait(empty);
wait(mutex);
buffer[in] = netxp;
in = (in + 1) % n;
signal(mutex);
signal(full);
}while(true);

void consumer(){
do{
wait(full);
wait(mutex);
nextc = buffer[out];
out = (out + 1) % n;
signal(mutex);
signal(empty);
consumer the item in nextc;
...
}while(true);
}

void main(){
cobegin
producer(); consumer();
coend
}

作业
进程的概念(定义) 状态 特征 标志 进程与程序的关系(异同)

0%