Linux进程(一) -- 介绍进程

计算机的系统架构

用户部分

这是用户直接与计算机交互的部分,包括以下三种操作:

  • 指令操作:用户通过命令行界面(CLI)输入指令来操作计算机。
  • 开发操作:开发人员编写和调试程序代码,与计算机系统进行更高级别的交互。
  • 管理操作:系统管理员进行系统配置、维护和管理。

用户操作接口

这是用户与操作系统交互的接口层,包括:

  • Shell外壳:提供命令行界面,允许用户输入命令以与系统交互。
  • 库(Lib):程序库提供系统调用的接口,程序员可以使用这些库函数来实现系统级操作。
  • 图形指令:通过图形用户界面(GUI)进行操作,用户可以通过点击、拖动等方式与系统进行交互。

系统调用接口(System Call Interface)

系统调用接口是用户程序请求操作系统服务的接口。用户操作接口通过系统调用与操作系统内核进行交互。系统调用包括文件操作、进程控制、内存管理等功能。

操作系统

操作系统是计算机系统的核心软件部分,负责管理硬件资源和提供基础服务,包括:

  • 内存管理:管理内存的分配和回收,确保各个进程能够有效使用内存。
  • 进程管理:负责进程的创建、调度和终止,确保系统能够高效地运行多个任务。
  • 文件管理:提供文件系统接口,负责文件的存储、读取和写入操作。
  • 驱动管理:管理硬件驱动程序,确保硬件设备能够正常工作。

驱动程序

驱动程序是操作系统与硬件设备之间的中间层,提供统一的接口,使操作系统能够控制硬件设备。包括:

  • 网卡驱动:管理网络接口卡(NIC),负责网络通信。
  • 硬盘驱动:管理硬盘,负责数据的存储和读取。
  • 其他驱动:管理其他硬件设备,如显示器、键盘、鼠标等。

底层硬件

底层硬件是计算机系统的物理部分,包括:

  • 网卡:负责网络通信。
  • 硬盘:用于数据存储。
  • 其他硬件:包括中央处理器(CPU)、内存(RAM)、输入输出设备(如键盘、显示器、打印机等)。

为什么要有操作系统

操作系统(Operating System,OS)是计算机系统中必不可少的核心软件,主要功能是管理硬件资源和提供用户与计算机之间的接口。以下是操作系统存在的几个关键原因:

硬件抽象

  • 统一接口:操作系统为不同硬件设备提供了统一的接口,使得应用程序不必关心底层硬件的具体实现细节。
  • 硬件管理:操作系统管理硬件资源,如CPU、内存、硬盘、网络接口等,确保资源的高效利用。

资源管理

  • 内存管理:操作系统负责内存的分配和回收,确保各个进程能高效使用内存,避免内存冲突和泄漏。
  • 进程管理:操作系统管理进程的创建、调度和终止,确保系统能平稳运行多个任务,提高系统的响应速度和吞吐量。
  • 文件系统管理:操作系统提供文件系统接口,管理文件的存储、读取和写入,确保数据的持久性和安全性。

提高用户体验

  • 用户界面:操作系统提供图形用户界面(GUI)和命令行界面(CLI),方便用户与计算机进行交互。
  • 多任务处理:操作系统允许多个程序同时运行,提高用户的工作效率和系统的利用率。

提供平台

  • 应用程序支持:操作系统为应用程序提供运行环境和基础服务,使得开发者可以专注于应用逻辑,而不必关心底层硬件细节。
  • 驱动程序支持:操作系统管理和加载设备驱动程序,使得新硬件可以快速被系统识别和使用。

安全性

  • 用户权限管理:操作系统通过用户账户和权限管理,确保只有授权用户可以访问和操作系统资源,提高系统的安全性。
  • 安全防护:操作系统提供防火墙、病毒扫描等安全功能,保护系统免受恶意软件和网络攻击的侵害。

稳定性和容错

  • 错误处理:操作系统提供错误检测和处理机制,确保系统在遇到错误时能够平稳恢复,减少系统崩溃的可能性。
  • 资源隔离:通过进程和内存管理,操作系统可以隔离不同应用程序的运行环境,防止一个程序的错误影响到其他程序的正常运行。

为什么要有操作系统的管理

操作系统的管理是计算机系统正常、高效、稳定运行的关键,下面详细说明为什么需要操作系统的管理及其主要功能:

资源管理

操作系统负责管理计算机的所有硬件资源,包括CPU、内存、存储设备和输入输出设备。其主要目的是确保资源的高效利用和公平分配:

  • CPU管理:操作系统调度不同的进程,确保每个进程都能公平地使用CPU资源,提高系统响应速度和吞吐量。
  • 内存管理:操作系统负责内存的分配与回收,防止内存泄漏和冲突,并提供虚拟内存技术,扩展物理内存的使用范围。
  • 存储管理:操作系统管理硬盘和其他存储设备的使用,包括文件系统的维护,确保数据的有序存储和快速访问。
  • 设备管理:操作系统通过设备驱动程序控制各种外围设备,如打印机、显示器和网络接口,提供统一的接口和控制方法。

多任务处理

操作系统允许多个任务同时运行,提高计算机的利用效率和用户的工作效率:

  • 进程管理:操作系统创建、调度和终止进程,确保系统能够高效地运行多个任务。
  • 线程管理:操作系统支持线程的并发执行,提高程序的运行效率和响应速度。

文件系统管理

操作系统提供文件系统,管理数据的存储、组织和检索:

  • 文件管理:操作系统负责文件的创建、删除、读取、写入和权限管理,确保数据的安全性和持久性。
  • 目录管理:操作系统提供目录结构,组织文件,方便用户和程序查找和管理文件。

用户界面

操作系统为用户提供交互界面,使用户能够方便地操作计算机:

  • 命令行界面(CLI):允许用户通过输入命令来操作系统。
  • 图形用户界面(GUI):通过图形界面,使用户可以通过点击、拖动等方式与系统交互,更加直观和易用。

安全性

操作系统通过多种机制保障系统的安全:

  • 用户认证和权限管理:操作系统通过用户账户和权限管理,确保只有授权用户可以访问和操作系统资源。
  • 安全防护:操作系统提供防火墙、病毒防护和入侵检测等安全功能,保护系统免受恶意软件和网络攻击的侵害。
  • 数据加密和备份:操作系统支持数据加密和备份,确保数据的保密性和可靠性。

错误检测与处理

操作系统提供错误检测和处理机制,确保系统在遇到错误时能够平稳恢复:

  • 故障隔离:操作系统通过进程隔离技术,防止一个进程的故障影响到其他进程的运行。
  • 日志记录与诊断:操作系统记录系统日志,帮助系统管理员诊断和解决问题。

提供平台支持

操作系统为应用程序提供运行环境和基础服务,使开发者可以专注于应用逻辑,而不必关心底层硬件细节:

  • API和库支持:操作系统提供丰富的应用编程接口(API)和库函数,简化应用程序的开发。
  • 兼容性和移植性:操作系统提供兼容性支持,使得应用程序可以在不同硬件平台和操作系统版本上运行。

系统调用vs库函数

调用上下文
  • 系统调用:涉及从用户模式到内核模式的切换。由于需要与操作系统内核交互,系统调用会导致上下文切换,开销较大。
  • 库函数:在用户模式下执行,不涉及内核模式的切换,调用开销较小。
功能权限
  • 系统调用:具有访问和操作硬件资源的权限。例如,直接进行文件操作、内存管理、进程控制等。
  • 库函数:通常不直接操作硬件资源,而是在用户模式下执行常见的编程任务,如字符串操作、数学计算等。
性能开销
  • 系统调用:开销较高,因为涉及到用户模式和内核模式的切换,以及可能的内核安全检查。
  • 库函数:开销较低,因为它们是在用户模式下直接执行的函数调用。
实现与来源
  • 系统调用:由操作系统内核实现,提供底层操作功能。
  • 库函数:由标准库或第三方库实现,提供高层次的编程接口。

联系

封装关系
  • 库函数封装系统调用:许多库函数会封装系统调用,为程序员提供更简单的接口。例如,printf库函数在底层会使用write系统调用来输出数据。
互补作用
  • 协同工作:库函数和系统调用协同工作,共同完成任务。库函数提供便捷的高层次接口,系统调用执行具体的底层操作。

示例

  • printf库函数printf是一个标准库函数,它通过格式化输出功能向标准输出打印字符串。在内部,printf最终会调用write系统调用来完成实际的输出操作。
  • write系统调用write直接与操作系统内核交互,将数据写入指定文件描述符(在此例中是标准输出)。

Linux是怎么描述进程的

在Linux操作系统中,进程的描述是通过数据结构task_struct来完成的。这个结构体包含了一个进程的所有必要信息。

task_struct 数据结构

task_struct是内核中用于描述进程的主要数据结构,定义在内核源码的include/linux/sched.h文件中。它包含了大量关于进程的信息,包括但不限于以下内容:

  • 进程状态state字段描述了进程的当前状态,如运行、等待、停止等。
  • 进程号pid字段表示进程的唯一标识符。
  • 父进程和子进程parent字段指向父进程,children字段是一个链表,包含所有子进程。
  • 进程的优先级prio字段表示进程的优先级,用于调度。
  • 进程内存信息mm字段指向进程的内存描述符mm_struct,包含进程的虚拟内存信息。
  • 进程的调度信息sched_class字段和相关的调度实体描述了进程在调度器中的信息。
  • 文件系统信息fs字段指向进程的文件系统信息,如当前工作目录和根目录。
  • 文件描述符表files字段指向进程的文件描述符表files_struct
  • 信号处理signal字段指向进程的信号处理信息signal_struct
  • CPU时间utimestime字段记录了进程的用户态和内核态的CPU时间。

进程控制块(PCB)

task_struct即是进程控制块(Process Control Block,PCB),它是操作系统用来管理进程的核心数据结构。每个进程在内存中都有一个对应的task_struct实例。、

为什么我们需要对每个进程形成一个PCB对象

在操作系统中,为每个进程创建一个进程控制块(Process Control Block,PCB)对象是非常必要的。以下是具体原因和好处:

集中管理进程信息

PCB集中存储了与进程相关的所有信息,包括进程状态、进程号、程序计数器、寄存器内容、内存管理信息、I/O状态信息等。通过PCB,操作系统可以快速访问和管理每个进程的所有相关信息。

实现多任务调度

操作系统需要在多个进程之间进行切换(上下文切换),以实现多任务处理。PCB保存了进程的上下文信息(如CPU寄存器状态、程序计数器等),使操作系统能够在切换进程时保存当前进程的状态并恢复另一个进程的状态,从而实现进程的无缝切换。

资源分配和保护

PCB包含了进程使用的资源信息(如打开的文件、使用的内存段等)。操作系统通过PCB确保每个进程只能访问其合法分配的资源,从而实现资源的安全和公平分配。PCB的存在有助于实现资源保护和进程间的隔离,防止一个进程的错误或恶意行为影响其他进程。

进程控制和管理

PCB支持进程的创建、执行、挂起、唤醒和终止等控制操作。操作系统通过操作PCB来实现对进程的各种控制和管理功能,如:

  • 创建进程:初始化一个新的PCB,并将其加入进程调度队列。
  • 挂起进程:保存当前进程的上下文信息到PCB,并将进程状态设为挂起。
  • 唤醒进程:从PCB中恢复进程的上下文信息,并将进程状态设为可运行。
  • 终止进程:释放进程占用的资源,并移除相应的PCB。

进程间通信和同步

PCB可以包含进程间通信和同步所需的信息,如消息队列、信号、信号量等。通过PCB,操作系统可以实现进程间的有效通信和同步,确保多进程环境下的协调运行。

错误检测和调试

PCB提供了进程运行状态和资源使用情况的详细记录,有助于错误检测和系统调试。操作系统可以通过检查PCB中的信息来发现进程运行中的异常情况,并采取相应的纠正措施

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[AWS] stepfunctions-local

本质是本地docker,只支持异步调用 run aws-stepfunctions-localdocker run -p 8083:8083 \ --mount type=bind,readonly,source=/path/MockConfigFile.json,destination=/home/StepFunctionsLocal/MockConfigFile.json \ -e SFN_MOCK_CONFIG="/home/StepFunctionsLocal/…

照明灯具十大排名都有哪些?市面上比较流行的十大护眼台灯品牌推荐

照明灯具十大排名都有哪些?护眼台灯排名当中靠前的主要有书客、飞利浦、松下等品牌。照明灯具作为家居与办公环境中不可或缺的元素,其品质与选择直接关系到人们的视觉健康与舒适度。本文将为大家揭示照明灯具的十大排名,让大家了解市场上最受…

【科学研究】 女性主义:网络中的性别歧视现象

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

识别AI论文生成内容,降低论文高AI率

AI写作工具能帮我们在短时间内高效生成一篇毕业论文、开通报告、文献综述、任务书、调研报告、期刊论文、课程论文等等,导致许多人开始使用AI写作工具作为撰写学术论文的辅助手段。而学术界为了杜绝此行为,开始使用AIGC检测系统来判断文章是由AI生成还是…

TL(TypeLetters)功能扩展#002:解放CPU。带打字练习软件原理分析

TL(TypeLetters)功能扩展#002: 解放CPU,带打字练习软件原理分析。 今天Type Letters时发现一个问题,TL的CPU占用达到了14%,按说一个小小的打字练习软件,不会有这么高的CPU占用率,是什…

「Qt Widget中文示例指南」如何实现一个快捷编辑器(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 快捷编辑器示例展示…

1U机架式多卡聚合设备在视频指挥车上的应用解决方案

随着信息技术的飞速发展,视频指挥车作为现代化指挥系统的重要组成部分,在各类应急指挥调度中发挥着越来越重要的作用。而1U机架式多卡聚合设备,以其高带宽、高可用性和高稳定性的特点,成为视频指挥车中不可或缺的关键设备。本文将…

Softing工业新版dataFEED OPC Suite支持访问SINUMERIK 840D数控机床

2024年4月17日(哈尔),Softing工业自动化宣布发布dataFEED OPC Suite V5.35新版。该版本支持访问SINUMERIK 840D数控机床数据,并集成了Web服务功能。 (dataFEED OPC Suite V5.35支持访问SINUMERIK 840D数控机床&#xf…

腾讯云服务器部署前后端服务

服务器:OpenCloudOS (兼容centos8) 后端:javaSpringboot 前端:Vue 下载jdk 1)下载jdk11 wget https://download.java.net/openjdk/jdk11/ri/openjdk-1128_linux-x64_bin.tar.gz 2)解压jdk …

基于微信小程序+JAVA Springboot 实现的【停车场小程序】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 停车场微信小程序的设计与实现 在当前信息技术飞速发展的背景下,停车场微信小程序的开发成为了一个创新的解决方案,旨在提高停车场管理的效率和用户的停车体验。本项目通过深入分析现有停车场管理系统的不足&#xff0c…

硬件FMEA与软件FMEA的区别——FMEA软件

​免费试用FMEA软件-免费版-SunFMEA 在产品开发和制造过程中,失效模式与影响分析(FMEA)作为一种预防性的质量工具,对于确保产品性能和质量至关重要。然而,硬件FMEA和软件FMEA在应用和实践方面存在显著的区别。本文旨在…

第51期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

双星号(**)和单星号(*)在Python参数传递中的妙用

在Python中,参数传递是一个非常重要的概念,它允许函数接收任意数量的参数。而双星号(**)和单星号(*)在参数传递中扮演着关键角色。本文将详细讲解这两个符号的用法,并通过示例代码帮助初学者理解它们的工作原理。 单星号(*) 单星号(*)用于函…

华为配置带反射器的iNOF功能实验

配置带反射器的iNOF功能示例 适用产品和版本 安装了SAN系列单板的CE16800系列交换机V300R020C10或更高版本。 安装了P系列单板的CE16800系列交换机V300R021C00或更高版本。 CE6866、CE6866K、CE8851-32CQ8DQ-P、CE8851K系列交换机V300R020C00或更高版本。 CE6860-SAN、CE8850-S…

MyBatis——动态 SQL

一、if 标签 <mapper namespace"com.powernode.mybatis.mapper.CarMapper"><select id"selectByMultiCondition" resultType"car">select * from t_car where<if test"brand ! null and brand ! ">brand like #{br…

【Docker】docker 镜像如何push到私有docker仓库

文章目录 一、 网址解析对于Linux和macOS系统&#xff1a;对于Windows系统&#xff1a; 二、 镜像push 一、 网址解析 希望 registry.meizu.com 能够解析到内网IP地址&#xff08;例如10.128.17.157&#xff09;&#xff0c;您可以通过修改主机的 hosts 文件来实现。 hosts 文…

百度文心一言 java 支持流式输出,Springboot+ sse的demo

参考&#xff1a;GitHub - mmciel/wenxin-api-java: 百度文心一言Java库&#xff0c;支持问答和对话&#xff0c;支持流式输出和同步输出。提供SpringBoot调用样例。提供拓展能力。 1、依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId…

7天精通Web APIs——正则阶段案例(理论+实战)(第六天)

正则表达式的定义和使用 定义&#xff1a;是一种匹配模式&#xff0c;用于匹配字符串中字符组合 作用&#xff1a;表单验证&#xff08;匹配&#xff09;、过滤敏感词&#xff08;替换&#xff09;、字符串中提取我们想要的部分&#xff08;提取&#xff09; 使用分为两步&…

基于C#开发web网页管理系统模板流程-登录界面

前言&#xff0c;首先介绍一下本项目将要实现的功能 &#xff08;一&#xff09;登录界面 实现一个不算特别美观的登录窗口&#xff0c;当然这一步跟开发者本身的设计美学相关&#xff0c;像蒟蒻博主就没啥艺术细胞&#xff0c;勉强能用能看就行…… &#xff08;二&#xff09…

STK12 RPO模块学习(3)

一、Maintain NMC RPO Sequence Maintain Natural Motion Circumnavigation RPO序列在目标星和追踪星经历不同的力的情况下保持NMC。通常这种差异是由于阻力和太阳光压造成的。这些是主要不同力当执行接近任务的时候&#xff0c;因为重力和相对三体摄动力非常小当相对距离在10…