【Linux】:体系结构与进程概念

简介: 【Linux】:体系结构与进程概念

1. 冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

  • 计算机里面几乎所有的设备,都具有存储数据的能力。
  • CPU处理数据的能力是非常快的,其次是内存,然后是各种外设。

为什么各种计算机、服务器大部分都要遵守冯诺依曼体系呢?

以CPU为中心,距离CPU越近的,存储效率越高,造价越贵。

那么这些存储器有存储效率与存储速度的区别,那么为什么不全都使用存储效率最好的存储器来组成计算机呢?

理论上是可以的,但是最关键的一点就是:太太太贵了!!!,因为计算机是需要大部分平民百姓去使用的,并不是只有一少部分富豪来使用,但如果都是用最为便宜的存储器来组成,那么造出来的计算机基本不能用,所以需要进行取中,在兼具性能的同时,也需要注意造价。

基于冯诺依曼体系结构的计算机的本质就是:用较少的成本,打造出来效率不错的计算机。

2. 操作系统

2.1 概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。大体的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

我们的计算机在开机时第一个加载的软件就是操作系统,它是一款软件,进行软硬件资源管理的软件。

为什么要有操作系统?

手段:操作系统将软硬件资源管理好。

目的:给用户提供良好(安全、稳定、搞笑)的使用环境。

2.2 关于管理

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件。

操作系统内部,一定会存在大量的数据对象和数据结构。那么OS是如何管理各种各样的数据呢?

在操作系统的内部,各种数据信息都是以一种数据结构--链表来进行存储管理的,链表中的每一个节点存储各种信息的属性,通过节点的指针将各个信息属性的节点连接起来,这样子就通过对链表的增删查改来实现对各种信息的管理。

2.4 总结

计算机管理硬件

  • 1. 描述起来,用struct结构体
  • 2. 组织起来,用链表或其他高效的数据结构
  • 3. 简要概括为:先描述,再组织

3. 系统调用

  • 在开发角度,操作系统对外会表现为一个整体但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

首先我们需要了解一下操作系统管理的核心:

  • 进程管理
  • 内存管理
  • 文件/IO管理
  • 驱动管理

那么关于管理方面总结出来的就是:“先描述。再组织

我们可以再将操作系统的层状结构拿过来看一下:

可以看到在用户到操作系统这一环节其中还是需要经过两层结构,那么为什么用户不能直接的去访问操作系统呢?

那么这里就涉及到一个安全的问题,对于操作系统来说,它是不相信任何一个人的,无论是谁,但是呢,它也要为我们做各种事情,那么就需要用到上述提到的OS暴露出来的一部分接口:系统调用接口。用户首先使用用户操作的接口来根据所需让系统调用接口去与操作系统进行交互,使得操作系统做出对应的操作。

在现实中也存在类似于操作系统与用户这样的例子,比如:银行与办理业务的社会人员,银行不会直接让你操作银行的资源系统,而是开放对应的窗口,设置对应的工作人员,你只需要将你的意愿转达给业务人员,那么他们就会实施对应的操作。

注意:

一般一个用户想要访问非常底层的OS数据或者访问硬件,都必须贯穿于整个层状结构。(用户必定要调用系统调用)

4. 进程

那在还没有学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢?很简单,先把进程描述起来,再把进程组织起来!

在我们的计算里面存在许多的可执行程序,这些可执行程序是存储在磁盘当中的,当启动可执行程序时,这个可执行程序会加载到我们的内存中。当我们打开许多的可执行程序之后,OS该如何去管理内存中的这些可执行程序呢?

先把进程描述起来,再把进程组织起来!

4.1 基本概念

基本概念:程序的一个执行实例,正在执行的程序等
内核观点:担当分配系统资源(CPU时间,内存)的实体

4.2 描述进程

  • 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
  • 也被称之为进程PCB(process control block),Linux操作系统下的PCB是: task_struct

简而言之就是这个PCB中存放的是这个可执行程序的各种属性信息。

那么到这里再来看进程:

进程 = 可执行程序 + 内核数据结构(PCB)

这同时也回归到了我们的先描述,再组织,对进程的管理转化为对PCB链表节点的增删查改,这样有助于OS对进程的管理。

task_struct-PCB

  • 在Linux中描述进程的结构体叫做task_struct。
  • task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的属性信息。

task_ struct内容分类

  • 标示符: 描述本进程的唯一标示符,用来区别其他进程。
  • 状态: 任务状态,退出代码,退出信号等。
  • 优先级: 相对于其他进程的优先级。
  • 程序计数器: 程序中即将被执行的下一条指令的地址。
  • 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
  • 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
  • I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
  • 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
  • 其他信息

所有运行在系统里的进程都以task_struct链表的形式存在内核里。

Linux中的进程PCB具体指的是:struct task_struct{}

朋友们、伙计们,美好的时

光总是短暂的,我们本期的的分享就到此结束,欲知后事如何,请听下回分解~,最后看完别忘了留下你们弥足珍贵的三连喔,感谢大家的支持!  

目录
相关文章
|
18天前
|
缓存 监控 Linux
linux进程管理万字详解!!!
本文档介绍了Linux系统中进程管理、系统负载监控、内存监控和磁盘监控的基本概念和常用命令。主要内容包括: 1. **进程管理**: - **进程介绍**:程序与进程的关系、进程的生命周期、查看进程号和父进程号的方法。 - **进程监控命令**:`ps`、`pstree`、`pidof`、`top`、`htop`、`lsof`等命令的使用方法和案例。 - **进程管理命令**:控制信号、`kill`、`pkill`、`killall`、前台和后台运行、`screen`、`nohup`等命令的使用方法和案例。
52 4
linux进程管理万字详解!!!
|
9天前
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
48 8
|
6天前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
|
18天前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
52 4
|
19天前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
20天前
|
消息中间件 存储 Linux
|
27天前
|
运维 Linux
Linux查找占用的端口,并杀死进程的简单方法
通过上述步骤和命令,您能够迅速识别并根据实际情况管理Linux系统中占用特定端口的进程。为了获得更全面的服务器管理技巧和解决方案,提供了丰富的资源和专业服务,是您提升运维技能的理想选择。
33 1
|
1月前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
【10月更文挑战第9天】本文将深入浅出地介绍Linux系统中的进程管理机制,包括进程的概念、状态、调度以及如何在Linux环境下进行进程控制。我们将通过直观的语言和生动的比喻,让读者轻松掌握这一核心概念。文章不仅适合初学者构建基础,也能帮助有经验的用户加深对进程管理的理解。
25 1
|
1月前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
32 0
Linux c/c++之IPC进程间通信
|
1月前
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
28 0
Linux c/c++进程间通信(1)