操作系统,是一个“软件”,是计算机上最重要,最复杂的软件之一。常见的操作系统有:Windows,Linux,Mac,iOS,Android 等。
操作系统是一个管理计算机资源的软件,会管理好各种硬件设备,会给各种软件提供稳定的运行环境。
进程说白了就是一个跑起来的程序,就是可执行文件“.exe”文件:
双击这些 exe 文件之后,操作系统就会把这个 exe 文件加载到内存当中,并且让 CPU 开始执行 exe 内部的一些指令,这些运行起来的可执行文件就是 进程。像任务管理器里面看到的这些,都是进程。进程也叫任务:

要想让一个进程正常工作,就需要给这个进程分配一些系统资源:内存,硬盘,CPU
线程是进程内部的一个部分,进程包含线程,加入进程是一个工厂,线程就是工厂里面的流水线。
操作系统里面主要是通过 C/C++ 来实现对一个进程的描述,所以这里的描述就是用:结构体 来描述的,和 Java 的类差不多,不过结构体功能更简单。操作系统当中描述进程的结构体,叫做:PCB(进程控制块)。
**创建进程:**就是创建出 PCB,然后加到双向链表当中。
**销毁进程:**就是找到 PCB,然后从链表当中删除
并行:微观上:多个 CPU 核心,同时执行多个任务的代码。
并发:微观上,一个 CPU 先执行一会儿任务1,再执行任务2,再执行任务3,然后再执行任务1,这样来循环。宏观上来看,切换的快,就好像很多任务在同时执行。
实现进程调度所需的属性:状态,优先级,上下文,记账信息。进程调度(多任务操作系统):一个系统同一时间,执行了很多的任务。
进程的调度,其实就是 操作系统在考虑 CPU 资源如何给各个进程分配。
内存资源是通过:虚拟地址空间来分配的,就是进程的独立性。
由于操作系统上,同时运行很多进程,某个进程出现 bug 并不会影响其它进程,因为做到了进程独立,就是使用了:虚拟地址空间。如果发现某个程序出现 bug 了,就可能引起其它进程的崩溃。解决方法就是给出很多线程,这些道路之间彼此隔离开,彼此走各自的道路,就不用担心引起其它进程的崩溃。
**进程间通信:**有些时候,进程是需要交互的,所以就提供一个公共空间来进行交互。一个进程把数据放到公共空间,另外一个进程来取走,这样的话,隔离性就不会被打破。
在操作系统当中,提供的”公共空间“有很多种,而且各有特点,有的存储空间大,有的小,有的快,有的慢。操作系统当中提供了很多种这样的进程间的通信方式。现在最主要的就是:文件操作(I/O),网络操作(socket)。