【Linux】进程序言

这里是阿川的博客,祝您变得更强

✨ 个人主页:在线OJ的阿川
💖文章专栏:Linux入门到进阶
🌏代码仓库:


写在开头

现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论


在这里插入图片描述

在这里插入图片描述

目录

  • 1. 冯.诺伊曼体系结构
  • 2. 操作系统
  • 3. 计算机层状结构
  • 4. 进程概念
  • 5.展望一下


1. 冯.诺伊曼体系结构

计算机硬件中,大部分都遵守冯诺依曼体系结构,具体如图1所示:
在这里插入图片描述

图1 冯诺依曼体系结构

存储器:内存

外设:

  • 输入设备: 鼠标、键盘、摄像头、话筒、磁盘、网卡…
  • 输出设备: 显示器、播放器、硬件、磁盘、网卡…
    有的设备既是输出又是输入设备

中央处理器(即CPU)

  • 运算器: 对我们的数据进行计算任务(算术运算,逻辑运算)
  • 控制器: 对我们的计算硬件流程进行一定的控制

运算器: 处理数据
控制器: 处理代码
各个硬件单元必须用"总线"(主要为系统总线、IO总线)连接起来

通过冯诺伊曼体系结构可知道一个程序要运行,必须先加载到内存中运行才可以,这是因为输入设备和输出设备处理时间为秒,而中央处理器处理时间为微秒,差距过于明显。 如果没有存储器作为中介则计算机整体运行效率低下。而有了存储器之后,输入设备的数据会先缓存到存储器中,积累一定的量之后中央处理器开始处理,而在缓存的过程中,中央处理器可以处理其他的任务(例如检查计算机状态,释放各种各样的资源,定期刷新数据等等),恰好存储器的运行效率处于输入输出设备与中央处理器之间,相较于没有存储器而言,提高了整体计算机运行效率。


2. 操作系统

为了更好地控制硬件,而创建了操作系统

操作系统(即OS): 是一款为了给用户提供一个良好(稳定、高效、安全)的运行环境,而对硬件和软件管理的软件
操作系统包括:

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

在开发角度,操作系统对外会表现为一个整体但是会暴露自己的部分接口供上层开发使用,这部分用操作系统提供的接口叫做系统调用
但系统调用在使用上,功能比较基础,对用户的要求也比较高,所以部分有能力的开发者对部分系统调用进行适度封装,从而形成了库,有了库,就有利于更上层用户或者开发者进行二次开发,甚至一些人在操作系统之上弄出来了开发语言,供开发人员编写程序

3. 计算机层状结构

计算机层状结构,具体如图2所示:
在这里插入图片描述

图2 计算机层状结构

4. 进程概念

操作系统的管理,实际上是通过对数据的管理,从而达到对软硬件资源的管理。而对数据进行管理则都是先描述,再组织,最终可以转化成对某种数据结构的增删查改,因此操作系统中一定会存在着大量的数据结构,这也是为什么要学数据结构这本书的原因所在

进程: 一个已经加载到内存的程序

操作系统可以同时运行多个进程,但形成真正进程时操作系统要先创建描述进程(即进程的属性)的结构体对象即PCB(全称process ctrl block —进程控制块

进程(也称为task)= 内存PCB数据结构对象(即这个进程的所有属性值)+ 自己代码和数据(code&date)
大致如图3所示:
在这里插入图片描述

图3 进程大致结构图

Linux当中的PCB实现
在Linux中描述进程的结构体叫做task _struct。task_struct是Linux内核的一种数据结构,它会被装载到RAM(即内存)里并且包含着进程的信息
task_struct内容包含着

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

Linux内核中组织进程,最基本的组织进程task_struct的方式,采用双向链表组织


5.展望一下

计算机中这些可以好好看下
操作系统(必学)
计算机网络(必学)
计算机组成
编译原理(本质:算法)

C/C++语言的最终表现形式:一套的编译器、头文件、库文件(辅助C/C++教材)


6. 夹带私货

若你能看到看到这篇文章且能看到这,则说明你我有缘留个关注吧,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……,祝你我变得更强

好的,到此为止啦,祝您变得更强
在这里插入图片描述
7.想说的话

实不相瞒,写的每篇博客都要写五六个小时(加上自己学习和纸质笔记,共八九小时吧),很累希望大佬支持

在这里插入图片描述

道阻且长 行则将至
个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1537111.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【例题】lanqiao4397 图书排序

在希尔排序的基础上,对数组(w0,id0)进行排序,先排权重w,再排id. nint(input()) w[] for _ in range(n):id0,w0map(int,input().split())w.append((w0,id0)) def shell_sort(a):gapn//2while gap>0:for i in range(gap,n):tmpa[i]jiwhile …

水下目标检测数据集 urpc2021

项目背景: 水下目标检测在海洋科学研究、水下考古、海洋资源勘探等多个领域具有重要的应用价值。由于水下环境的复杂性和多变性,传统的人工检测方法存在诸多限制,自动化检测技术的需求日益增加。URPC2021数据集旨在为水下目标检测提供高质量…

【C++】STL数据结构最全函数详解2-向量vector

关于STL,我们之前浅浅提过:这里 另外对于栈,这里有更加详尽的介绍:CSTL常用数据结构1详解---栈(stack)-CSDN博客 这个系列将会更加深入地从函数原型开始用详细的例子解释用法 首先这一篇介绍的是一个非常…

macOS Sequoia发布:Apple又给我们带来了什么惊喜?

今天是个激动人心的日子,尤其是对于Mac用户来说,因为Apple正式发布了全新的操作系统——macOS Sequoia。作为一款专为Mac设备设计的操作系统,Sequoia不仅仅是简单的升级,它承载了Apple在系统体验上的巨大飞跃。听到这个消息,你可能会好奇,Apple这次又会带来什么样的创新?…

ABC371E I Hate Sigma Problems 题解

ABC371E I Hate Sigma Problems 题解 题目描述问题陈述限制因素 样例1解析题解(1) 暴力枚举做法代码运行结果 (2) 暴力优化做法代码运行结果 正解代码运行结果 结语 题目描述 问题陈述 给你一个长度为 N N N 的整数序列 A ( A 1 , A 2 , … , A N ) A (A_1, A_2, \ldots,…

PyCharm 安装教程

传送门 PyCharm 是一款由 JetBrains 开发的强大的 Python 集成开发环境(IDE)。它支持多种功能,包括调试、代码补全、智能代码分析、版本控制集成等,特别适合开发 Python 项目。接下来,我们将详细介绍如何在不同操作系…

每日一个数据结构-跳表

文章目录 什么是跳表?示意图跳表的基本原理跳表的操作跳表与其他数据结构的比较 跳表构造过程 什么是跳表? 跳表(Skip List)是一种随机化的数据结构,它通过在有序链表上增加多级索引来实现快速查找、插入和删除操作。…

<<编码>> 第 12 章 二进制加法器--16位加法器 示例电路

16 位加法器内部结构 info::操作说明 鼠标单击逻辑输入切换 0|1 状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlchs-ch12-10-16-bit-adder-internal.txt 16 位加法器示例 info:…

详解JUC

Java并发工具包(Java Util Concurrent, 简称JUC)是Java提供的一组用于简化多线程编程的类和接口,它包含了用于线程同步、并发数据结构、线程池、锁、原子操作以及其他并发实用工具的丰富集合。 1. 线程池 线程池是 Java 并发编程…

SOMEIP_ETS_112: SD_Empty_Option

测试目的: 验证DUT能够拒绝长度为0的IPv4选项的SubscribeEventgroup消息,并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议,当接收到一个IPv4选项长度为0的SubscribeEventgroup消息时,能够正…

电子竞技信息交流平台|基于java的电子竞技信息交流平台系统小程序(源码+数据库+文档)

电子竞技信息交流平台系统小程序 目录 基于java的电子竞技信息交流平台系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设…

如何设置 Django 错误邮件通知 ?

Django 是一个强大的 web 框架,非常适合那些想要完美快速完成任务的人。它有许多内置的工具和特性,一个有用的特性是 Django 可以在出现错误时发送电子邮件提醒。这对开发人员和管理员非常有用,因为如果出现问题,他们会立即得到通…

基于Springboot的物流管理系统设计与实现(附源代码)

物流管理|物流管理系统|基于Springboot的物流管理系统设计与实现 物流管理系统源码:物流管理系统主要是借助计算机,通过对物流管理系统所需的信息管理,物流管理系统的目的 2.2物流管理系统作用 2.3物流管理系统的发展趋势 3物流管理系统分析…

课堂助手|微信课堂助手系统小程序(源码+数据库+文档)

课堂助手|课堂助手系统小程序 目录 微信课堂助手系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿…

react 组件通讯

组件通讯 组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据。在组件化过程中,我们将一个完整的功能拆分成多个组件,以更好的完成整个应用的功能。而在这个过程中,多个组件之间不可避免的要共享某些数据。为…

【蓝牙协议栈】精讲蓝牙PCM和URAT

前言 在蓝牙通信中,PCM和UART是两种不同的数据传输接口,用于连接蓝牙模块和其他设备。它们的作用和特点如下: 1. PCM(Pulse Code Modulation) PCM:(pulse coded modulation)脉冲编码调制,是将…

Hybrid接口的基础配置

Hybrid模式是交换机端口的一种配置模式,它允许端口同时携带多个VLAN(虚拟局域网)的流量。Hybrid端口可以指定哪些VLAN的数据帧被打上标签(tagged)和哪些VLAN的数据帧在发送时去除标签(untagged)…

MySQL_数据类型简介

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

QT学习与数据库连接

1.基础 1. 安装最后一个非在线版本 5.14, 没有的话联系我 新建一个.cpp文件 #include <QApplication> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QHBoxLayout> #include <QVBoxLayout> #include <Q…

道路横幅检测数据集 2000张 街道横幅 带标注 voc yolo

项目背景&#xff1a; 城市中的街道横幅通常用于广告宣传、公共通知等目的&#xff0c;但在某些情况下&#xff0c;它们也可能影响交通安全或市容市貌。因此&#xff0c;对街道横幅进行自动化检测不仅可以帮助城市管理机构及时发现并处理不当悬挂的横幅&#xff0c;还可以辅助…