Linux内核实战(二)-操作系统概述(上)

简介: Linux内核实战(二)-操作系统概述

os就像一个软件外包,内核就相当于这家外包公司老板。

接下来请假设你就是这个老板,方便理解os如何协调各种资源帮客户做事。

后文中

  • 用户指os的用户
  • 客户指外包公司的客户

1 硬件概述

1.1 鼠标和键盘

计算机的输入设备。

用户想要告诉计算机应该做什么,都是通过这两个设备。

一家外包公司如何知道客户需求?

需配备销售、售前等角色,专门负责和客户对接,把客户需求拿回来,统称这些人为客户对接员。

1.2 屏幕

即显示器,计算机的输出设备,将计算机处理用户请求后的结果反馈给客户。


显示器上面显示的东西由显卡控制。

显示器和显卡都有“坐标”概念,即何图像在何坐标,都是定义好再画。

本来在某坐标画了一个鼠标箭头,当接到鼠标移动的事件之后,你应该按相同的方向,按照一定比例(鼠标灵敏度),在屏幕的某个坐标再画一个鼠标箭头。


当客户给你提了需求,不管你做还是不做,最终做成什么样,你都需要给客户反馈,所以你要配备交付人员,将做好的需求展示给他们。

1.3 输入设备驱动

客户对接员。

有时新插上一个鼠标,会弹窗通知你安装驱动,这就是os这家外包公司给你配备的对接人员。当客户告诉对接员需求时,对于os,输入设备会发送一个中断。

客户肯定希望外包公司把正在做的事情都停下来服务它。所以,这个时候客户发送的需求就被称为中断事件(Interrupt Event)。

1.4 输出设备驱动

交付人员。

显卡会有显卡驱动,在os中称为输出设备驱动。

2 从点击程序,窥探OS全貌

有了客户对接员和交付人员,外包公司就可以处理用户“在桌面上点击QQ图标”的事件了。


首先,鼠标双击会触发一个中断,这相当于客户告知客户对接员“有了新需求,需要处理一下”。你会事先把处理这种问题的方法教给客户对接员。在操作系统里面就是调用中断处理函数。操作系统发现双击的是一个图标,就明白了用户的原始诉求,准备运行QQ和别人聊天。


你会发现,运行QQ是一件大事,因为将来的一段时间,用户要一直和QQ进行交互。


这就相当于你们公司接了一个大单,而不是处理零星的客户需求,这个时候应该单独立项。一旦立了项,以后与这个项目有关的事情,都由这个项目组来处理。

2.1文件管理系统

立项可不能随便立,一定要有一个项目执行计划书,说明这个项目打算怎么做,一步一步如何执行,遇到什么情况应该怎么办等等。

换句话说,对QQ这个程序来说,它能做哪些事情,每个事情怎么做,先做啥后做啥,都已经作为程序逻辑写在程序里面,并且编译成为二进制了。这个程序就相当于项目执行计划书。


电脑上的程序有很多,它们都以二进制文件的形式保存在硬盘上。硬盘是个物理设备,要按照规定格式化成为文件系统,才能存放这些程序。文件系统需要一个系统进行统一管理,称为文件管理子系统(File Management Subsystem)。

2.2 进程与程序

对于你们公司,项目立得多了,项目执行计划书也会很多,同样需要有个统一保存文件的档案库,而且需要有序地管理起来。

当你从资料库里面拿到这个项目执行计划书,接下来就需要开始执行这个项目了。项目执行计划书是静态的,项目的执行是动态的。


同理,当操作系统拿到QQ的二进制执行文件的时候,就可以运行这个文件了。


QQ的二进制文件是静态的,称为程序(Program),

运行起来的QQ,是不断进行的,称为进程(Process)。

2.3 系统调用

你会发现,一个项目要想顺畅进行,需要用到公司的各种资源,比如说盖个公章、开个证明、申请个会议室、打印个材料等等。

这里有个两难的权衡

资源有限,甚至是涉及机密的,不能由项目组滥取滥用

效率,咱是一个私营企业,保证项目申请资源的时候只跑一次,这样才能比较高效。

为了平衡这一点,一方面涉及核心权限的资源,还是应该被公司严格把控,审批了才能用;


另外一方面,为了提高效率,最好有个统一的办事大厅,明文列出提供哪些服务,谁需要可以来申请,然后就会有回应。


在操作系统中,也有同样的问题。


例如多个进程都要往打印机上打印文件,如果随便乱打印进程,就会出现同样一张纸,第一行是A进程输出的文字,第二行是B进程输出的文字,全乱套了。所以,打印机的直接操作是放在操作系统内核里面的,进程不能随便操作。但是操作系统也提供一个办事大厅,也就是系统调用(System Call)。


系统调用也能列出来提供哪些接口可以调用,进程有需要的时候就可以去调用。


这其中,立项是办事大厅提供的关键服务之一。同样,任何一个程序要想运行起来,就需要调用系统调用,创建进程。

2.4 进程管理系统

一旦项目正式立项,就要开始执行,就要成立项目组,将开发人员分配到这个项目组,按照项目执行计划书一步一步执行。

为了管理这个项目,我们还需要一个项目经理、一套项目管理流程、一个项目管理系统,例如程序员比较熟悉的Jira。如果项目多,可能一个开发人员需要同时执行多个项目,这就要考验项目经理的调度能力了。


在操作系统中,进程的执行也需要分配CPU进行执行,也就是按照程序里面的二进制代码一行一行地执行。


于是,为了管理进程,我们还需要一个进程管理子系统(Process Management Subsystem)。如果运行的进程很多,则一个CPU会并发运行多个进程,也就需要CPU的调度能力了。


目录
相关文章
|
1天前
|
存储 Shell Linux
操作系统实战(一)(linux+C语言)
本篇文章重点在于利用linux系统的完成操作系统的实验,巩固课堂知识
|
1天前
|
存储 算法 Linux
【Linux】线程的内核级理解&&详谈页表以及虚拟地址到物理地址之间的转化
【Linux】线程的内核级理解&&详谈页表以及虚拟地址到物理地址之间的转化
|
1天前
|
安全 Linux
【Linux】详解用户态和内核态&&内核中信号被处理的时机&&sigaction信号自定义处理方法
【Linux】详解用户态和内核态&&内核中信号被处理的时机&&sigaction信号自定义处理方法
|
1天前
|
存储 Linux
【Linux】对信号产生的内核级理解
【Linux】对信号产生的内核级理解
|
1天前
|
消息中间件 算法 Linux
【Linux】对system V本地通信的内核级理解
【Linux】对system V本地通信的内核级理解
|
1天前
|
Linux Shell
Linux操作系统下查找大文件或目录的技巧
Linux操作系统下查找大文件或目录的技巧
|
2天前
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
16 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
1月前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
34 0
|
1月前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
2月前
|
Linux 数据安全/隐私保护 虚拟化
Linux技术基础(1)——操作系统的安装
本文是龙蜥操作系统(Anolis OS) 8.4 的安装指南,用户可以从[龙蜥社区下载页面](https://openanolis.cn/download)获取ISO镜像。安装方法包括物理机的光驱和USB闪存方式,以及虚拟机中的VMware Workstation Pro设置。安装过程涉及选择语言、配置安装目标、选择软件集合和内核,设置Root密码及创建新用户。安装完成后,可通过文本模式或图形化界面验证系统版本,如Anolis OS 8.4,标志着安装成功。