学习笔记:操作系统

2020/12/14 23:09:16

序言

今天想简单写一些操作系统相关的知识,大二也学过操作系统,但由于年代有些久远、自己记忆力也不好导致很多知识都有遗漏,今天写篇笔记来巩固一下知识

操作系统的作用

进程管理、文件管理、内存管理、设备管理

什么是进程、线程、协程

  • 进程:进程即我们程序的一次执行,进程是操作系统用于分配资源和调度的基本单位。
  • 线程:线程是比进程更小的单位,一个进程可以包括多个线程,而一个线程只能隶属于一个进程,同一进程下的多个线程共享该进程下的堆和方法区,同时它们也都有自己的程序计数器,本地方法栈和虚拟机栈。
  • 协程:协程是一种基于线程,但又比线程更加轻量级的存在,一般协程就是指用户态轻量级的线程,正如一个进程可以包含多个线程而言,一个线程也可以包括多个协程。

进程的调度方法

  • 先来先调度:调度最先进入队列等待的进程
  • 优先级调度:根据优先级进行调度,优先级越高越先被调度
  • 短作业优先:根据进程的执行时间进行调度,执行时间越短的进程越先被调度到
  • 时间片轮询:为每一个进程划分一个时间片,根据划分的时间片进行调度

什么是用户态/内核态

是这样的,操作系统当中分为很多指令,有一些指令是非常危险的,比如清内存、设时钟......,因此这些指令又分为特权指令和非特权指令,特权指令只能在内核态进行调用,因为为了保证系统的安全性和高性能分成了用户态和内核态。

用户态到内核态的切换:

  • 可以通过系统调用,将用户态切换到内核态,eg:进程上下文切换,需要调用内核态的函数时会完成切换。
  • 通过硬件触发信号,导致内核调用中断处理程序,进入内核态。

何为内存管理?

操作系统中的内存管理主要就是负责内存的分配和内存回收,地址的转换,将虚拟地址转换为物理地址,常见的内存管理方式也就是虚拟内存管理。

什么是虚拟内存?

虚拟内存是一种内存管理的技术,这个在windows当中十分常见,很多程序运行时所需的大小远远超过了物理内存,正是通过虚拟内存才可以运行这些程序。

为什么要有虚拟地址?

首先虚拟地址可以让多个程序同时指向同一物理地址,使用虚拟地址可以很方便的同时运行多个程序,虚拟地址可以防止程序对物理地址的直接访问,避免造成破坏。

内存管理机制

  • 块式管理:最古老的管理方式,将内存分为多个块,为每个进程分配一个块,但是这种方式会造成较严重的内存碎片化,因为块的大小是固定的,而每个进程的大小不一样,当有的进程很小时,就造成了内存的浪费
  • 页式管理:也是一种内存管理机制,将内存划分成多个页,大小是固定的,相较于块式管理内存利用率会搞一些,但还是无法避免内存碎片化情况
  • 段式管理:目前效果最好的内存管理方式,将内存划分为多个段,段的大小不是固定的,它会根据进程的大小来决定段的大小,提高了系统利用率,也减少了内存碎片化情况
  • 段页式管理:结合了段式管理和页式管理的优点

CPU寻址

CPU使用最多的寻址方式就是虚拟寻址方式,所谓寻址就是寻找真正的物理地址,通过CPU当中一个被称为内存管理单元的硬件实现。

总结

以上就是近期复习到的一些操作系统知识,还是有很大的欠缺的,日后定会补上,未完待续......