Linux 学习之路 - 进程篇 - PCB介绍1-标识符

这篇具有很好参考价值的文章主要介绍了Linux 学习之路 - 进程篇 - PCB介绍1-标识符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、基础的命令

<1> ps axj 命令

<2> top 命令

<3> proc 目录

二、进程的标识符

<1>范围

<2>如何获取标识符

<3>bash进程

三、创建进程


一、基础的命令

前面介绍了那么多,但是我们没有观察到进程相关状态,所以下面我们介绍几个命令,帮助查看进程

<1> ps axj 命令

这个命令就能查看当前所有进程相关信息,其中ps命令通常就是用于查看当前运行的程序。其他的选项暂时不做介绍。

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

下面我演示一个进程供大家参考

这里先在test.c文件里一段循环代码(如果我们不用循环,进程会很快的开始并销毁,我们没法观察到)

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

运行该程序,并打开另一个终端,观察这个程序是否为终端

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

此时我们就会发现,这里面有两个进程,一个是./tt.c 另一个是 grep 命令,grep命令也是进程是因为我们在筛选这个过程本身也就是一个程序,程序运行就是一个进程。这里我们就可以发现,几乎任何的独立的指令就是一个程序,一运行就是一个程序。

<2> top 命令

top命令也能查看一些进程的信息,只不过相对上一个命令,这个命令观察到的进程信息相对限,这个命令主要由于检测系统的运行情况,跟windows操作系统的任务管理器类似,具有监管的功能。

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

<3> proc 目录

在 /proc 目录下,我们也可以查看进程的信息,不过这里涉及文件系统的相关知识,这里大家简单了解一下就好

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

这些数字代表就是具体的进程,我们可以进入其中查看对应的数据

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

这里我们可以看见两个显眼的数据,一个是exe,对应的是磁盘里的对应路径的可执行程序,另外一个cwd就表示当前的工作目录,这也就是我们在我们能在创建文件时,系统默认就能创建在当前目录下的原因。(其他的数据暂不做了解)这里我们是能够修改这个路径的,使用chdir 接口就能完成该操作

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

只要在chdir 中输入新的文件路径,就修改当前的工作路径。

二、进程的标识符

<1>范围

在操作系统中常常要运行大量的进程,为了方便管理,操作系统给每一个进程都分配了一个标识符,通过标识符唯一确定这个进程。

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

在64位机器下,这个进程标识符的范围将达到2的22次方。这里的“1”号进程其实就是init进程,也就是系统进程。

<2>如何获取标识符

在了解完标识符的大小后,下面就是怎么获取的问题,在进程被创建时,系统就会自动个这个进分配进程号,我们可以通过getpid这个函数来获取一个进程的标识符(pid)

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

这里的pid_t其实就个进程都有一是个整数,只不过系统做了重命名。getpid可以获得当前进程的pid , getppid可以获得父进程的pid,这两个函数是系统调用的函数。每一个父进程,每一个进程都会在自己的PCB里加入自己父进程的ppid。

<3>bash进程

我们先用getpid和getppid获得父子进程的进程号,然后运行一个简单的程序。

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

运行该程序

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

我们可以发现,每次运行程序,程序的pid都不同,但是ppid都是一样,说明我们运行的程序都是由同一个父进程创建的,我们再用ps命令查看该pid对应的进程

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

这里我们可以看见,创建子进程的是一个bash命令,这里bash其实就是命令行解释器,这也是一个进程。

三、创建进程

创建进程我们可以使用fork命令,这里我们打开man手册,可以查看对应的信息

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

我们可以看见,这里的fork就是创建一个子进程,这里我们可以写一段演示代码,来了解fork函数的特性。

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

退出运行代码

Linux 学习之路 - 进程篇 - PCB介绍1-标识符,Linux进程,学习

当前ppid为815其实就是bash进程(这里我是在不同的时间段写的,所以bash的进程号会和上文的进程号不同,这个可以通过ps命令自行查看,这里我就不演示了)。这里我们可以看到会有三个输出,说明在fork创建之后,下面的语句执行了两次,分别是父进程和子进程分别执行了一次,而且他们的代码时共享的。这里的特性大家先记着,后面我将为大家一 一 介绍其中原理。

感谢各位读者的阅读,希望我的文章对各位有些帮助,如果文中有不当之处还望各位大佬指正,谢谢!!!文章来源地址https://www.toymoban.com/news/detail-845228.html

到了这里,关于Linux 学习之路 - 进程篇 - PCB介绍1-标识符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 操作系统安全:Windows与Linux的安全标识符,身份鉴别和访问控制

    「作者简介」: 2022年北京冬奥会中国代表队,CSDN Top100,学习更多干货,请关注专栏《网络安全自学教程》 操作系统有4个安全目标,也就是说想要保证操作系统的安全,就必须实现这4个需求: 标识系统中的用户和进行身份鉴别。 依据系统安全策略对用户的操作进行访问控

    2024年04月26日
    浏览(44)
  • Python学习笔记(2)--字面量,注释,变量,数据类型,数据类型转换,标识符,运算符

    传送门==B站黑马python入门教程 1.字面量 字面量 : 代码中被固定写的值 python常用的6种数据类型为 数字,字符串,列表,元组,集合,字典 目前基础部分学习 字符串,整数,浮点数 即可 字符串 :(文本),由任意数量的 字符 (示例:中文/英文/各类符号/数组)组成; 在 python 中,字符串需要用双

    2024年02月11日
    浏览(66)
  • 错误C2065:未声明的标识符 - 解决C++中的未声明标识符错误

    错误C2065:未声明的标识符 - 解决C++中的未声明标识符错误 在C++编程中,错误C2065是一种常见的编译错误,它表示使用了一个未声明的标识符。通常情况下,这个错误是由于忘记包含必要的头文件或者拼写错误导致的。本文将介绍如何解决这个错误,并提供相应的源代码示例

    2024年02月06日
    浏览(55)
  • 初识标识符

    abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implementis import instanceof int interface long native new package private protected public return strictfp short static super switch synchronized this throw throws transient try void volatile while   java所有的组成

    2024年02月11日
    浏览(63)
  • 解决C++遇到的未定义标识符 “string“、未定义标识符 “cout“、“name”: 未知重写说明符错误

    目录 解决C++遇到的未定义标识符 \\\"string\\\"、未定义标识符 \\\"cout\\\"、“name”: 未知重写说明符错误 1. 未定义标识符 \\\"string\\\" 2. 未定义标识符 \\\"cout\\\" 3. “name”: 未知重写说明符错误 总结 1. 未定义标识符 \\\"string\\\" 2. 未定义标识符 \\\"cout\\\" 3. “name”: 未知重写说明符错误 在C++编程中,我们可

    2024年02月06日
    浏览(117)
  • C# 标识符命名规则和约定

    目录 命名规则 命名约定 C# 编码约定 命名约定 帕斯卡拼写法 驼峰式大小写 如何使用模式匹配以及 is 和 as 运算符安全地进行强制转换 标识符是分配给类型(类、接口、结构、记录、委托或枚举)、成员、变量或命名空间的名称。 有效标识符必须遵循以下规则: 标识符必须

    2024年02月12日
    浏览(55)
  • 第6关:Python的标识符

    2023年04月09日
    浏览(50)
  • 电脑的唯一标识符,VC++如何读出?

    电脑有没有唯一标识符,查了一些资料,开始以为CPUID可以,但是实际上统一类型的CPU用的是相同的ID: 那么BIOS ID是否是唯一的呢?主板上 的BIOS 芯片是主板上 唯一 贴有标签的芯片,如果电脑开机时登录bios可以看到里面的一些基本信息: bios编号也可以用win cmd的命令获得,

    2024年02月12日
    浏览(59)
  • vscode “未定义标识符”的一种情况

    原来工程复制到新电脑上面,变量出现“未定义标识符”的红色底纹波浪线,按Ctrl + 鼠标左键,可以跳转到定义处(说明,\\\"includePath\\\"项设置正确)。 根据电脑的具体的情况,修改“intelliSenseMode”: 1)如果你的电脑是默认的情况(没有额外安装编译器),设置为\\\"intelliSens

    2024年02月12日
    浏览(51)
  • ora-12154无法解析指定的连接标识符

    用户反映查询的时候报错ora-12154 这个系统只做历史数据查询使用,使用并不平凡,该数据库曾做过一次服务器间的迁移。 用户描述,所有oracle客户端查询该视图都报tns错误,一般ora-12154会发生在连接数据库时,因为tns配置不正确而报错,但是这个报错发生在进行查询过程中

    2024年01月23日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包