现代操作系统(引论)

操作系统的两大主要作用是什么?

  • 管理硬件为用户提供一个简单的计算机模型

由于用户直接和硬件打交道是一件很困难的事,所以就由操作系统为用户提供一个资源集的清晰抽象,而用户通过操作系统管理硬件资源。

  • 资源管理与分配

在程序之间有序对处理器、存储器、以及一些IO接口设备…进行分配;记录程序使用资源的信息,对资源进行分配;其中资源管理包括(1)时间复用 (2)空间复用。

列举常用的 9 种操作系统应用

  1. 大型机操作系统 ==》与个人计算机主要差别是IO处理能力强大,主要提供的服务:批处理、事物处理、分时;(1)批处理应用:保险公司索赔、连锁商店的销售报告;(2)事物处理应用:银行支票处理,航班预定;(3)分时应用:在大型数据库查询;
  2. 服务器操作系统 ==》在服务器上(个人PC、工作站、大型机)运行,通过网络为多用户服务,用户可以共享资源;应用:可以提供打印服务、文件服务、Web服务处理请求;
  3. 多处理器操作系统 ==》将多个CPU连接成单个系统;应用:个人计算机、以及笔记本电脑大都是多核芯片
  4. 个人计算机操作系统 ==》为单个用户提供良好的支持;应用:游戏、字处理软件、Internet 访问…等
  5. 掌上计算机操作系统 ==》手机、平板
  6. 嵌入式操作系统 ==》在控制设备的计算机中运行,不能安装软件;应用:微波炉、电视机、MP3;主要的嵌入式操作系统又linux、QNX;
  7. 传感器节点操作系统 ==》有许多用途需要配置微小传感器节点网络,节点就是微型计算机;应用:森林火灾探测、气象预测、建筑物保护等
  8. 实时操作系统 ==》将时间作为关键参数,分为硬实时系统和软实时系统;某个动作必须在规定的时间内完成,比如民用航空、军事之类的必须提供严格的保证就是硬实时系统,软实时系统相对来说不是很严格,就像超过时间期限也不会有太大影响;
  9. 智能卡操作系统 ==》最小的操作系统,包含一块CPU芯片的信用卡;应用:电子支付…等

分时系统和多道程序系统的区别?

  • 多道程序系统则是不同 程序 间的穿插运行
  • 分时操作系统是给不同 用户 提供程序的使用

多道程序系统:在计算机内存中运行多个相互独立的程序; 特点是:多道、宏观上并行、微观上串行。从宏观上看是并行的,多道程序都处于运行中,并且都没有运行结束;从微观上看是串行的,各道程序轮流使用CPU,交替执行。目的是为了提高CPU的利用率,充分发挥计算机系统部件的并行性

分时操作系统:一台计算机同时为多个用户提供资源(系统处理机时间与内存空间)按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。特点是:可有效增加资源的使用率

主存与高速缓存

为了使用高速缓存,主存被划分为若干cache行,通常每行长32或64字节。每次缓存一整个cache行,每次缓存一整行而不是一个字节或一个字,这样的优点是什么?

存储器访问表现出引用局部原则,即如果读取某一个位置,则接下来访问这个位置的概率非常高,增加缓存命中的概率;读取速度快

CPU 、DMA 、多道程序

每个字节的读取直接由 CPU 处理而没有 DMA ,这对于多道程序来说这种组织方式有啥意义?

DMA (Direct Memory Access,直接内存存取) 它允许不同速度的硬件装置来沟通 而不需要依赖于 CPU 的大量中断负载。在多道程序的情况下 CPU 处理读取会占用 CPU 大量的时间造成效率的降低;

由于CPU 访问内存/读取 得到指令数据的时间要大于执行指令的时间,所以把一些关键变量或临时数据保存在寄存器上;这样在指令集中提供一些指令可以把一个字节从内存调入寄存器,也可以把它由寄存器调到内存;如果没有 DMA ,则 CPU 需要把每一片段的资料复制到寄存器,然后把它们再次写回到新的地方,在这个时间中,CPU 对于其他的工作来说就无法使用;

内核态 vs 用户态

(很重要)
https://www.cnblogs.com/likui360/p/6224633.html

https://blog.csdn.net/qq_39823627/article/details/78736650

陷阱指令

当一个程序出错的时候,比方说:执行非法指令,使用无效地址,这些陷阱会转换成信号,是使操作系统发送给进程一个指令,这个指令会引起进程挂起,系统将其寄存器的值保存到堆栈;也就是发送陷阱指令去处理错误。

进程表

进程被挂起后,进程表保存着进程的所有信息,在随后的某个时刻里,进程再次启动的状态必须与先前暂停的状态完全相同;一个进程有关的信息除了进程自身的地址空间内容以外,其它均放在进程表中;在单一进程的系统中是不需要进程表,因为单一进程从不挂起。

调用 fork exec unlink 失败的条件?

如果进程表中没有内存空间 或者达到进程数的上限 调用fork 将失败;.对于exec 失败的的原因是 :如果找不到文件或路径,此时errno被设置为ENOENT;数组argv和envp 忘记用NULL结束 ,此时errno被设置为EFAULT;要执行的文件没有运行权限 此时errno被设置为EACCES。如果将要解除链接的文件不存在,或者调用unlink 的进程没有权限,则unlink将失败。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的温柔香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值