操作系统

131 篇文章 1 订阅

作用:让用户更好更方便地使用计算机
对于裸机的一个扩展,扩展计算机
将只认识0,1,只认识高电平和低电平的水平扩展成可以使用键盘鼠标等工具来操作。看输出时,不用去盯着各个闪烁的小灯,电平的高低
资源的管理者
将软件硬件等通过操作系统,全面的管理起来
有哪些资源?
硬件资源 软件资源(内存中的变量-记录当前某一实物的状态 区域 硬盘上一个文件)
如果不能全面管理。就不能称为操作系统
core
管理资源
可编程,可下命令,可用工具操作
操作系统内核必须包含:
输入、输出
cpu 内存
冯诺依曼
运算器 控制器 CPU 存储器 内存
硬盘输入
输出
功能调用 api Application Program Interface

先导课

标准c
数据结构
算法
计算机组成原理
汇编语言

功能分配
CPU 内存
跟外界交互,跟人的交互

进程管理 内存管理 输入 输出
图灵咬了一口毒苹果(氰化钾)自杀,苹果公司标志的由来
图灵测试 一个人和人以及计算机分别交流,如果这个人分辨不出来计算机和人,呢就是说这台机器通过了图灵测试
Ada第一个女程序员,也是最安全的一个程序语言,Ada的父亲是拜伦

第一代计算机没有操作系统
只有通过波动开关,面板上观察灯
第二代出现批处理系统 晶体管 电子系统的成熟
把任务送进去,很快就处理完了,可以把一批任务送进去,就是批处理。
集群
一批进一批出
多个任务,需要有一个管理者,早期操作系统雏形
监控
60年代 操作系统真正诞生 multiprogramming
超大规模集成电路成熟
大型机水冷 这边进凉水 一边水就可以洗澡了 空调集降温不够
OS/360
软件危机
指数增长

CTSS
多任务执行 分时系统

Unix
Dennis Ritchie Ken Thompson utf8作者
操作系统 少量汇编,大量c

计算机主机部分 cpu(个数有限) 内存
多核就是多个执行单元

伪并行
操作系统功能使得感觉起来好像是并行一样

Chips
主频很快 意味着发热量增加 必须要用更近的线才能降低功效 cpu制成
到纳米10-9 发生量子效应 电子跃迁

为什么有Chips?
内存速度和CPU速度差距很大 CPU远快于内存 寄存器 cpu中的一个个记录数据的位置 读一个数一个纳秒
从内存中读取数据10个纳秒

Chips 速度和寄存器差不多,容量比寄存器大,比内存小 很贵 very expensive 二级缓存
麻烦问题
一个cpu

不是一回事。寄存器是cpu直接访问和处理的数据。一般CPU都会从内存取数据到寄存器,然后进行处理,但是如果老是访问内存同一个地址的话,就会影响效率,于是产生了CPU内置的缓存。
一级缓存 二级缓存 三级缓存都是CPU中的一个部分 容量依次变大 读写速度下降,缓存是用来填补CPU的高速处理速度和内存总线的相对较慢的读写速度的空缺的

硬盘速度是10+7纳秒
所以没有硬盘寻址

磁带更慢

硬盘两种结构
盘面 机械式硬盘 速度慢 涉及到机械运动 盘面要旋转

固态硬盘 芯片存储
贵 使用寿命

I/O设备
通过中断来控制

总线
pci

system calls 由操作系统提供 共程序员用来调用的功能

系统调用格式
标准c
汇编中断

POSIX接口

return o 代表成功success
1 failure

推荐书籍 ------unix环境高级编程
讲述 -系统调用

线程 threads

现在科技利用了很多人类反应慢的特点
人类反应慢就是一个层次,在这个层次上,我们才能读取到我们的世界,我们的世界才是看起来的这个样子。这就是佛学中所说的所知障。 戒定慧 诸法空性

web service process request respond

线程池 threads pool

用户请求发送到80端口

dispatcher thread分配线程的线程

资源分配给进程,进程拥有资源,进程中的线程共享进程资源。
调度的最小单位是线程

进程信息
全局变量 打开文件 申请的内存空间 子进程 收到的信号
线程控制信息
堆栈,有自己的状态 tid 自己的寄存器

堆栈是内存区开辟出来为函数中定义的变量(除了new以外的定义)提供存储空间的区域。
顾名思义,数据在堆栈中 的存储就是一个一个堆上去的,就是说后放的变量存在最上面(栈顶),所以从堆栈中取出变量时它最先被取出,(后进先出)。

global steak(栈) heap(new)

POSIX Threads

线程的实现方法
一种是实现在用户级别
一种是实现在内核级别

trade off 折中

进程调度

挑一个进程和线程,最应该运行的程序去运行

推动计算机发展的最根本的动力-------游戏

玩游戏需要大量计算,所以耗费CPU。
图形学

密集型CPU
I\O密集型

批处理
交互
实时

批处理和交互式系统CPU利用率的好坏正好相反
批处理CPU利用率越高越好,否则就是浪费CPU资源
交互式CPU不管有没有浪费 主要关注响应时间

中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。

实时系统 任务是非常明确的 比如锅炉厂的一个管理控制系统,对时间的要求非常严格

shortest Job first短作业优先

batch批处理

响应比 1+等待时间/执行时间 高响应比优先算法

interactive systems 交互式系统
轮转法 在一定时间内十个进程都会分一些时间运行一下
priority scheduling 优先级调度
multiple queue多队列
lottery 彩票调度 中等偏上的算法 较好的 绝对公平

进程中nice值,nice值越大,越慢 0-39 默认20

系统优先级怎么算

普通系统优先级
40+nice+惩罚值

惩罚值 若果总是占用CPU就会越来越大 惩罚值有一个半衰性质 一半一半地减少

实时进程自己设置 不变 小于40 优先于任何一个普通进程

动态优先级 公平
静态优先级 固定

race condation
mutex 互斥
同步

critical regions 临界区 一段代码 要使用某一个临界资源 可以被两个或者多个进程共享使用,但不能同时使用

四个条件
1.不能同时有两个进程进入临界区
2.不能估计出运行进程的CPU的速度和个数 都是杂乱的 不清楚的 随机的 无序的 进程的个数
3.任何进程不能阻挡其他进程进入临界区
4.进程不能一直长期被阻塞在临界区之外

等待有两种
busy waiting
sleep waiting

避免竞争的方法
禁止中断 disabling interrupts 不能随便使用 完全让计算机禁止 只能内核偶尔为之 不能让用户使用
lock variables 锁变量 锁

C语言中一个变量没有初始化,初值为零

tsl 测试 并设置 原子性的操作

忙等待 交换数值

就是如果进程A,B,C,D等进程想要进入临界区,使用临界资源,就需要寄存器内进程A的内容与临界区资源(在内存上)进行交换,寄存器为1,内存为未被使用时为0,两者交换数值,如果,A拿到0,就可以进入临界区了。
自旋锁

何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。

exchange语句实现自旋锁

数据结构加算法等于程序

信号量 S
是能够被PV操作来使用的,原语,原子性的,不可打断的代码 自旋锁
只能够用PV来操作 不能读,不能写 例外:定义的时候可以单独赋初值
并不是完全的整数,有整数部分,还有等待队列
定义信号量
semaphore
整数部分
正整数 代表对应资源可用的个数
负值 等待使用该资源的进程的个数

PV in sleep and wakeup
P(Semaphore s)
{
s=s-1;
if(s<0)
{
去睡觉
added to the semaphore’s queue and sleep;
}
}

V(Swmaphore s)
{
s=s+1;
if(s<=0)
{
wakeup the waiting process in the semaphore’s queue;

}
进入P 离开 V

假如有两个进程A,B 有一台打印机
A进来,P开始运行,给S赋初值1(表示有一个资源打印机),执行P代码,S=0,不满足s<0,开始打印工作
B进来,执行P,S=S-1=-1,满足是s<0,开始去睡觉等待 -1表示有一个进程在等着
C进来,执行P,s=-2,去睡觉,-2表示两个进程在等待
打印结束,执行V,s=s+1=-1,满足s<=0,唤醒B, (由于信号量除了整数部分,还有等待序列-专门为进程去睡觉准备的),B开始打印 -1表示还有一个进程在等待,即C
B执行结束,在唤醒C

busy waiting
P(Semaphore s)
{
s=s-1;
while(s!<0)
{
不停测试,不去睡觉,没有睡觉的概念
yield the CPU;
s–;
}
}

V(Semaphore s)
{
s++;
}

此方法,在A运行完成之后,C和B谁去运行,并不确定

互斥
同步 严格轮转法

生产者消费者解法

Metexes 互斥锁 0 说明没锁 1 有人占用

yield就是放弃CPU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值