操作系统

一.kernel与shell

从整体上来说,操作系统一般分为内核和外壳两大部分。操作系统的内核是实现操作系统基本功能的程序模块的集合,在机器的核心态下运行;操作系统的外壳,是指运行在内核之上的、完成OS外层功能(如命令解释、机器诊断等)的程序,他们运行在机器的用户态下,是一种开放式结构,其功能可方便地修改或增删。

计算机系统都有两种状态,即核心态和用户态,某一时刻二者必然占其一。
用户态:用户具有较低特权的执行状态,在这种状态下,处理机只能执行规定的指令,访问指定的寄存器和存储区,用户程序通常只能在这一级别执行。
核心态:核心态是操作系统内核的运行状态,在这种状态下,处理机具有较高的特权,能执行一切指令,可以访问所有的寄存器和存储区。

操作系统的基本特征

1.并发:并发是指宏观上一段时间内能运行多个程序,而并行是指同一时刻能运行多个指令。并行需要硬件支持,如流水线或者多处理器。操作系统引入进程和线程,使得程序能否并发运行。
2.共享:共享是指操作系统中的资源可以被多个并发进程共同使用。有两种共享方式:互斥共享和同时共享。互斥共享的资源称为临界资源,需要用同步机制来实现对临界资源的访问。
3.虚拟:虚拟技术把一个物理实体转换为多个逻辑实体。主要有两种虚拟技术:时分复用和空分复用技术。如多个进程在同一处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。
4.异步:异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。 "异步模式"非常重要。在浏览器端,耗时很长的操作都应该异步执行,避免浏览器失去响应,最好的例子就是Ajax操作。

内核的系统调用

1.进程控制:fork();exit();wait();
2.进程通信:pipe();shmget();mmap();
3.文件操作:open();read();write();
4.设备操作:ioctl();read();write();
5.信息维护:getpid();alarm();sleep();
6.安全:chmod();umask();chown();

二.计算机体系结构及内存管理

1.虚拟内存

虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

覆盖技术把程序按逻辑结构,那些不会同时执行的共享一块内存,按时间先后来运行。

交换技术将暂时不能运行的程序放入外存,换入换出内容的大小为整个程序的地址空间,增加了处理器的开销。

2.虚拟页式内存管理

用页管理,请求调页和页面置换功能。在磁盘中存储未被映射的页。
当需要的页不在内存中,我们称其为缺页中断,我们需要用适当的页面置换算法选择当前内存中驻留的页面置换出去。

(1)最优页面置换算法

计算它的下一次访问之前,还需等待多长时间,选择时间最长的,作为被置换的页面。

(2)先进先处算法

选择在内存中驻留时间最长的页面。

(3)最近最久未使用LRU

选择最久未被使用的淘汰,用双向链表+map实现

(4)时间页面置换

用比特位标志该页面被访问过没有,所有页面组织成环,指针指向最老的页面,若其访问标识位为0,立即淘汰,否则置为 0,直到找到第一个0淘汰。

(5)最不常用算法

选择访问次数最少的那个页面,用桶和链表实现。通常结合时间权重。

Belady现象:在采用某种算法时,分配更多的内存页反而导致缺页率提升的现象。

3.虚拟段式内存管理

相当于二维分页,程序的地址空间划分成多个拥有独立地址空间的段,每个段上的地址空间划分成大小相同的页。这样既拥有分段系统的共享和保护,又有分页系统的虚拟内存功能。
页的大小不可变,段的大小可变。
页的大小是2的整数幂。

4.内存分配

(1)连续内存分配:

首次适配:找到第一个适合的就分配这个连续内存。简单,但容易产生大的空闲块和很多外部碎片。
最优适配:找到最合适的,需要按尺寸排列的空闲块列表,重分配需要搜索并合并相邻的分区。当分配小尺寸时非常有效,但重分配慢。
最差适配:找到最不合适的。容易出现大内存无法分配的现象。

(2)非连续内存分配:

优点:
1.一个程序的物理地址是非连续的
2.更好的内存利用和管理
3.允许共享代码和数据
4.支持动态加载和动态链接

分段:把数据分配到多个物理地址空间。如堆/运行栈,可以使用权限保护机制实现。
这样段访问的方式就变成:段块+段偏移 --> 段寄存器+地址寄存器实现
分页:分段里的大小是动态分配的,但页的大小是固定的。
物理内存被分成大小相等的帧,一个内存地址是一个二元组(帧号,帧偏移)

页寻址机制:
1.页映射到帧
2.页是连续的虚拟内存
3.帧是非连续的物理内存
4.不是所有的页都有对应的帧
5.通过页表+页帧判断是否是合法内存地址

分页机制性能问题:访问一

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值