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

news2024/12/28 17:41:28

计算机的系统架构

用户部分

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

  • 指令操作:用户通过命令行界面(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中的信息来发现进程运行中的异常情况,并采取相应的纠正措施

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

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

相关文章

4.分支与循环

逻辑控制分为三部分: 1.顺序结构---》顺序执行代码 2.分支结构---》if语句和switch语句 3.循环执行---》for语句 while语句 和do while语句 顺序结构比较简单,按照代码书写的顺序一行一行执行 分支结构(if、switch语句) 也就是…

网络安全快速入门(十二) linux的目录结构

我们前面已经了解了基础命令,今天我们来讲讲linux中的目录结构,我们在了解linux的目录结构之前,我们先与Windows做一个对比 12.1linux和windows的目录结构对比 在之前认识liunx的章节中,我们已经简单说明了linux和window的目录结构…

2024年蓝桥杯——复盘

1、握手问题 知识点:模拟 这道题很简单。但是不知道考试的时候有没有写错。一开始的43个人握手,仅需要两两握手,也就是从42个握手开始,而非43.很可惜。这道题没有拿稳这5分。也很有可能是这5分导致没有进决赛。 总结&#xff1a…

LLVM中期报告

1.主要开展的工作 研究对LLVM IR层面进行代码混淆,分析IR的指令 ,并且实现混淆 从LLVM代码混淆的角度出发,函数之间的正常调用构成了待混淆程序的原始控制流,不同的基础代码块构成了一个个的函数,每个基础…

Edge浏览器自动翻译功能按钮不见了

前言: 平时偶尔会用到Edge的页面翻译功能,使用挺方便。突然发现Edge浏览器的翻译功能不见 了。如下图所示: 解决思路: 1、从网上找各种解决方案也没有解决,其中有一个说到点右上角的三个点 2、点击设置…

构建滴滴业务中台:系统架构设计探索

在当今数字化时代,滴滴作为中国领先的出行平台,承载着数亿用户的出行需求,业务规模庞大且复杂多样。为了更好地支撑业务发展和提升服务质量,滴滴不断探索和构建业务中台,以实现业务的快速响应、灵活运营和持续创新。在…

深度学习之神经网络理论基础

深度学习之神经网络理论基础 人工神经元 人工神经元:人类神经元中抽象出来的数学模型 MP模型 mp模型:1943年心理学家W.S.McCulloch和数理逻辑学家W.Pitts研究出人工神经元,称为M-P模型。 M-P神经元(一个用来模拟生物行为的数学模…

FileLink内外网文件交换系统解决方案

FileLink内外网文件交换系统,作为一种高效且安全的文件传输解决方案,在多个应用场景中发挥着不可替代的作用。无论是在企业内部不同子网间的文件交换,还是企业与外部合作伙伴之间的文件共享,FileLink都能提供稳定可靠的解决方案。…

Qt---文件系统

一、基本文件操作 1. QFile对文件进行读和写 QFile file( path 文件路径) 读: file.open(打开方式) QlODevice::readOnly 全部读取->file.readAll(),按行读->file.readLine(),atend()->判断是否读到文件尾 …

算法课程笔记——自下而上树形DP

算法课程笔记——自下而上树形DP #include<bits/stdc.h>usingnamespacestd; constintN100005; intn,a[N]; longlongdp[N][2]; vector<int> e[N]; voiddfs(intu){for(autov:e[u]){dfs(v);dp[u][1]dp[v][0];dp[u][0]max(dp[v][0],dp[v][1]);}dp[u][1]a[u]; } intmain…

一个API接口对接ChatGPT3.5/4.0,Claude3,文心一言,通义千问,智谱AI等多款AI模型,打造属于自己的AI应用

今天我要给大家介绍团队的最新项目——一个集成了ChatGPT-3.5/4.0、Claude3、文心一言、通义千问、智谱AI等多个AI模型的API模型聚合平台。仅需使用一个接口就可以对接所有AI模型 为什么要创建这个平台&#xff1f; 随着不同的AI模型陆续问世&#xff0c;每个模型都有其独特…

怎么获得公网IP?

什么是公网IP 在计算机网络中&#xff0c;公网IP&#xff08;Internet Protocol&#xff09;是指可以直接被互联网访问和通信的IP地址。相对应的&#xff0c;私网IP则是在局域网内使用的IP地址&#xff0c;无法直接被互联网访问。获得公网IP对于一些特定的网络需求非常重要&am…

C++的相关知识集

1、C概述 1 两大编程思想 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效&#xff0c;简洁&#xff0c;快速和可移植的传统。 2 起源 与c语言一样&#xff0c;c也是在贝尔实验室诞生的&#xff0c;Bjarne Stroustrup(本贾尼斯特劳斯特卢普)在2…

解锁AI写作新纪元的文心一言指令

解锁AI写作新纪元的文心一言指令 在人工智能&#xff08;AI&#xff09;飞速发展的今天&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术取得了显著的进步。文心一言&#xff0c;作为NLP领域的一颗璀璨明星&#xff0c;以其强大的文本生成和指令理解能力&#xff0c;为…

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

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

Workfine签章方案使用说明

概述 为支持绝大部分第三方签章平台&#xff0c;Workfine针对性添加了部分动作事件与message支持。用户只需要自己开发中间代理程序&#xff0c;用于Workfine与签章平台的通讯即可完成整套签章方案。 整体业务流程图如下&#xff1a; 设计端添加发送PDF动作事件&#xff0c;生…

代理IP可靠吗?哪里可以找到可靠的代理?

需要代理来访问受限制的网站或改善您的在线隐私&#xff1f;别再犹豫了&#xff01;在这篇博文中&#xff0c;我们将探讨您可以使用的选项&#xff0c;并提供有关在哪里获取代理的指导。 首先&#xff0c;让我们了解什么是代理及其工作原理。代理充当您的设备和互联网之间的中介…

HTML哆啦A梦

目录 写在前面 HTML简介 完整代码 代码分析 系列推荐 写在最后 写在前面 谁不想拥有一只可爱的叮当猫呢&#xff1f;本期小编给大家带来了一个萌萌的哆啦A梦。 HTML简介 HTML&#xff0c;即超文本标记语言&#xff0c;是构建网页的基础技术之一&#xff0c;它是一种标…

[数据结构1.0]选择排序

鼠鼠前面的博客介绍过选择排序是常见的排序算法&#xff0c;选择排序有但不限于直接选择排序和堆排序&#xff01;那么鼠鼠今天浅谈一下选择排序&#xff01; 鼠鼠本博客用排升序来介绍选择排序&#xff01; 目录 1.直接选择排序 1.1.直接选择排序 1.2.直接选择排序特性 2…

【qt】动态属性

这里写目录标题 一.属性1.属性的好处2.添加属性3.使用属性 二.只读属性 一.属性 1.属性的好处 说到属性&#xff08;property&#xff09;&#xff0c;你们会想到什么&#xff1f;我会联想到特点&#xff0c;就是一类对象所特有的&#xff0c;在C中&#xff0c;成员数据就是这…