一:操作系统
1.什么是操作系统:
操作系统的本质其实是一个软件,不过这是一个是人们为了去管理底层的硬件和为上层软件提供良好运行环境的软件.
应用程序:就是你电脑桌面上的软件
系统调用:内核给系统提供的API(接口),应用程序需要调用一些硬件设备时就需要系统调用来完成.就类似于一种工具,就比如你炒菜要用锅铲才能炒.你要做一件事情,你自己本身不能做,但是借助与模样工具就能完成这件事情.你可以根据这样来理解.
内核:操作系统的核心,管理操作系统的各个模块
驱动:硬件设备所提供能够识别它的软件
硬件设备:鼠标,键盘,摄像头等
2.为什么要使用操作系统:
使软件和硬件能够进行交互
3.操作系统有哪些:
当前主流的有Linux系统,Mac(苹果系统),windows系统.(Linux系统主要是给程序员使用的系统)
二:进程
1.什么是进程:
进程实际上就是跑起来的程序,当你在电脑上打开一个软件,它在后台运行起来了,此时它就是进程.
它是操作系统分配资源的基本单位.
2.如何管理进程:
进程统一由操作系统进行管理.操作系统通过 描述+组织 来管理进程
(1)描述(PCB结构体):
为了描述进程,特意用名为PCB的结构体来描述进程
- pid:它是识别程序的唯一标识(pid实际上是唯一的数字)
- 内存指针:表明自己在内存中存储在哪块地址上(此处的地址是指虚拟地址不是物理地址)
- 文件描述符表:进程所使用的硬盘上的文件等其他资源
- 进程调度相关的属性:
- 前提知识(并发,并行):
- 并发:通常情况下cpu的数量只有少而进程的数量多,为了提高效率cpu需要在很短的时间内为进程提供服务,而当这个时间变得很短之后,在宏观上这些进程就是在同时进行运行的,但是在微观上是cpu执行的速度很快,使用者本身是感受不到的.
- 并行:微观上也是在同一时刻运行的.
- 进程的状态:就绪状态(随时准备运行,但是没有运行),运行状态,阻塞状态(此时的cpu正在处理其他事情,无法为这个程序服务)
- 进程的优先级:有些进程可能很重要一旦出现就需要先执行,此时在进程之间就会出现有的进程先执行,有的后执行的情况.
- 上下文:因为cpu执行程序是并发的,所以可能一个程序执行一半时需要去执行其他程序,当返回未执行完的程序时它需要知道上次执行到哪个地方.所以cpu在放弃执行该程序时和重新执行该程序时所记录的状态信息就叫上下文.(此时的上下文就是cpu中寄存器的值)
- 记账信息:每隔一段时间记录下操作系统花费的时间和执行指令的数目,为下一次调度作参考.
(2)组织:
使用双向链表来组织
三:内存管理
程序中获取到的内存不是真实的地址而是虚拟地址.
为什么要用虚拟地址?
每个程序都会在内存中去声明一块自己的地址,当一个程序去访问地址时出现了越界访问很可能会导致另一个程序崩溃,所以此时需要引用一个虚拟地址来解决这个问题.
程序本质上还是存储在物理地址上,但在存储在物理地址之前,需要用虚拟地址来表示,然后通过MMU这个专门用来将虚拟地址转换为物理地址的硬件设备,最后存储到物理内存中.此时如果程序出错只会自己报错不会影响其他的程序.解决了进程之间相互影响的问题.
但是如果进程想要互相交互,就是进程之间想要通信就需要到"公共空间"中交换数据.通信的主要方式有基于文件和基于网络两个方式进行通信.(方式不止有有两种)