hello~ 很高兴见到大家! 这次带来的是Linux系统中关于进程这部分的一些知识点,如果对你有所帮助的话,可否留下你宝贵的三连呢?
个 人 主 页 : 默|笙
文章目录
- 一、冯·诺依曼体系结构
-
-
- [1.1 认识冯·诺依曼体系结构](#1.1 认识冯·诺依曼体系结构)
- [1.2 了解冯·诺依曼体系结构](#1.2 了解冯·诺依曼体系结构)
-
- 二、操作系统(OS)
-
-
- [2.1 认识操作系统](#2.1 认识操作系统)
- [2.2 操作系统如何管理](#2.2 操作系统如何管理)
- [3.3 初步了解进程](#3.3 初步了解进程)
-

一、冯·诺依曼体系结构
绝大多数通用计算机基于冯·诺依曼体系结构或其改进变体,常见的有笔记本、平板手机、服务器等。

1.1 认识冯·诺依曼体系结构
- 冯·诺依曼体系结构由输入设备、存储器、输出设备以及运算器和控制器等组成的中央处理器也就是cpu构成。
- 这里的输入设备指的就是像键盘、鼠标、麦克风、摄像头,还有磁盘等等。
- 这里的存储器指的是内存,而像我们所使用的磁盘或者网卡是其实是外存(外部存储),在冯·诺依曼体系结构中扮演的是输入设备。
- 输出设备就是显示器、内置喇叭等。
1.2 了解冯·诺依曼体系结构
- 为什么要有存储器?这是因为外设速度相比于cpu特别特别慢,如果不设置存储器的话,整个计算机的效率就要取决于外设速度(根据木桶效应)。而有了存储器,就可以先把一部分数据提前加载然后与cpu交互,提高效率。但是相比于cpu还是慢的,所以计算机的效率是取决于内存的。我们口中的输入和输出都是相对于存储器的。
- 所谓的数据传输,其实就是拷贝操作,输入设备将数据拷贝到存储器,然后存储器再将数据拷贝到cpu,cpu处理完数据之后再拷贝回存储器,最后存储器将数据拷贝到输出设备进行输出。所以计算机的效率问题由拷贝效率来决定。
- 注意,cpu是不会直接跟输入设备输出设备打交道的(这由冯·诺依曼体系结构所决定),所以要运行一个程序,就必须先把程序加载到存储器里面,再由存储器和cpu完成交互,最后由存储器给输出设备。
二、操作系统(OS)

2.1 认识操作系统
- 我们平常所听到的操作系统指的是广义上的操作系统,它是操作系统内核加上一系列外壳程序和基础工具的合成体。但接下来所要讲和接触的是去除那些外壳程序之后剩下来的操作系统内核,也被称为狭义上的操作系统。绿圈可以看作基于操作系统内核的构建的类似于ubuntu图形界面还有安卓系统,蓝圈可以看作基于安卓系统进一步完善界面和功能的小米系统、oppo系统等。
- 操作系统内核四大功能:进程管理、文件管理、存储管理和驱动管理。能够发现,操作系统干的事情就是管理。
- 设计操作系统的目的:是为了让用户有一个稳定的、高效的、安全的使用环境(对上),而与硬件交互管理好软硬件资源只是操作系统的手段(对下)。
2.2 操作系统如何管理

- 理解操作系统管理软硬件的手段:操作系统管理硬件但不会直接跟硬件见面,而是通过驱动程序来进行管理,底层硬件会将自身的数据交给驱动程序然后由驱动程序交给操作系统。操作系统只要有了底层硬件的数据就能够通过驱动程序来进行管理。操作系统就像是校长,而驱动程序类似于辅导员,底层硬件则是学生。校长管理学生并不会直接跟学生见面,因为学生太多了。校长只需要从学生的辅导员那里获取学生的数据就能够实现管理(开除、留级等),至于执行交给辅导员去做就好。
- 先描述再组织(描述为结构体再用数据结构组织起来):管理多个学生,其实就是管理这些学生的数据,比如年龄、性别、经历等等。我们将这些属性合并起来形成一个结构体,再加上一个指针指向下一个这样的结构体,成为了链表,这样就把所有学生的数据信息组织起来了,对学生的开除、留级等操作就变成了对链表的增删查改操作。
- 用户也无法跟操作系统直接进行交互,因为这很不安全。用户只能够通过系统调用接口来间接完成与操作系统之间的交互。可以将操作系统比喻成一个银行,客户想存钱是不能够直接进入金库存钱的,如果有坏人该怎么办?那太不安全了。而是通过银行所开放的一个一个窗口办理业务。
- 在开发层面,操作系统对外会表现为一个整体,我们无法直接访问,但是操作系统同样也会提供一些接口供上层开发使用,而这些接口就是系统调用。在上面银行的例子里这个银行提供的交互窗口就是系统调用。
3.3 初步了解进程
- 在我们的操作系统内比如windows操作系统就能够同时运行多个程序,而运行程序第一步就是要把它们加载到内存里面。这也代表一定会同时存在多个进程。
- 操作系统是需要对这些进程进行管理的,操作系统管理的办法是先描述再组织,也就是先将该程序的数据属性用struct结构体包含描述起来,再将这些结构体组织起来形成数据结构来方便操作系统进行更好的管理。
- 进程不是加载到内存里面的程序(数据和代码),而是加载到内存里的程序+内核数据结构对象(task_struct),它们合起来才能被叫做进程。
今天的分享就到此结束啦,如果对读者朋友们有所帮助的话,可否留下宝贵的三连呢~~
让我们共同努力, 一起走下去!