学校操作系统课程教的不是多好,自己按照哈工大李治军老师的操作系统学习的,感觉讲解的比较好,总结如果有误,还望大佬指点一二,另需要,哈工大操作系统系统视频的在文末留下邮箱即可,我看到会发送的。
以下是大致总结:
现有的操作系统一般有 windows、Linux、unix 以及一些 Linux 的发行版等
首先第一个问题,什么是操作系统(OS)?
按照我自己的理解,操作系统其实就是管理计算机硬件资源的一层软件,为上层用户提供服务,高效的使用计算机硬件。
操作系统的类型,由原始的 单道批处理系统 ---》多道程序系统 ---》现代的微型计算机系统(raspberry)、网络操作系统(Linux)、分布式操作系统、以及嵌入式操作系统(ROMIS)
大致就是这么多东西,总结的不是很全面,只是一个总的图谱,里面的详细内容,接下来解释
操作系统最重要的就是要管理好 CPU 和内存,那么 CPU 和 内存管理好了,硬件高效的利用起来了,一个操作系统也就完成了,首先操作系统是通过多进程来管理CPU的,CPU在不同的进程中,来回切换,实现多进程,(队列操作 + 进程调度 + 切换),进程又细分为线程,在线程中引出用户级线程和核心级线程,线程的切换:用到两个TCB、两个栈、切换的PC在栈中。(注意:在系统中同一时刻只有一个进程在运行,只不过是因为CPU运转速度非常快,看不到切换的过程罢了)
进程调度算法:https://www.cnblogs.com/Blog-day/p/My_Blog_Days1-11.html,这篇博客中有详细的描述算法内容,这里只是简单回顾一下,详细的可以自行查看
- FCFS(先来先服务)
- SJF/SPF(段作业(进程)优先调度)
- HRF(高响应比优先)
- RR(轮转调度)
- 多级反馈队列
进程同步:生产者-消费者模型(多线程中也会提到)【PV原语】
信号量---》 信号量的临界区保护(硬件原子保护法)
死锁的问题:
死锁产生:
- 互斥条件
- 占用并等待时间
- 不可剥夺时间
- 环路条件等待
避免死锁的方法:
经典的银行家算法(Dijkstra)核心思想是:试分配,找安全序列
内存管理:
- 段式管理
- 页式管理
- 段页式管理
- 虚存概念的提出
程序的执行过程,
C语言在学习的时候,编写完源代码,需要经历编译---》链接---》运行,
那么这些过程都做了些什么?编译将源代码编译为汇编代码(或者是更底层的二进制01),一个程序有若干部分(段)组成,每个段有各自的特点、用途;代码段只读,数据段不会动态增长,(动态申请内存除外)。
OS不会将整个程序分配到一段连续的长度上,而是将内存分段,将数据加载进入内存,在程序运行的过程中,进行地址重定向,段地址+段内偏移得到实际地址
未完,待续