学校操作系统课程教的不是多好,自己按照哈工大李治军老师的操作系统学习的,感觉讲解的比较好,总结如果有误,还望大佬指点一二,另需要,哈工大操作系统系统视频的在文末留下邮箱即可,我看到会发送的。

以下是大致总结:

现有的操作系统一般有 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不会将整个程序分配到一段连续的长度上,而是将内存分段,将数据加载进入内存,在程序运行的过程中,进行地址重定向,段地址+段内偏移得到实际地址

 

未完,待续