当前位置: 首页 > news >正文

龙华学校网站建设最新国际新闻事件今天

龙华学校网站建设,最新国际新闻事件今天,二级域名网站,武汉做网站好的公司目录 预备知识 切入点 PCB 看见进程 pid getpid 函数 预备知识 Linux -- 冯诺依曼体系结构(硬件)-CSDN博客https://blog.csdn.net/2301_76973016/article/details/143598784?spm1001.2014.3001.5501 Linux -- 操作系统(软件&#xf…

目录

预备知识

切入点

PCB

看见进程

pid

getpid 函数


预备知识

Linux -- 冯诺依曼体系结构(硬件)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/2301_76973016/article/details/143598784?spm=1001.2014.3001.5501

Linux -- 操作系统(软件)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/2301_76973016/article/details/143606208?spm=1001.2014.3001.5501

切入点

电脑是不是一次只能启动一个程序?不是的,电脑可以同时启动多个程序,我们打开微信的同时,也可以打开音乐软件听歌,不会因为打开了微信就不能听歌了。

每个程序都要加载到内存中才能执行,操作系统要不要管理被加载到内存的多个程序呢?显然是需要的。

那么操作系统如何管理加载到内存的程序呢?先描述再组织!

PCB

我们需要定义结构体 PCB(Process Control Block,即进程控制块),结构体中通常包含以下信息:

  1. 进程标识符:每个进程有一个唯一的标识符,以便操作系统可以区分不同的进程。
  2. 处理器状态信息:包括程序计数器、寄存器集合、条件码等,这些信息在进程切换时会被保存起来,以便进程重新获得CPU时间时恢复执行。
  3. 内存管理信息:比如进程地址空间的描述符,页表基址等,用于支持虚拟内存管理。
  4. 会计信息:例如进程开始时间、结束时间、使用的资源量等,用于性能监控和计费。
  5. 优先级信息:用于决定进程调度策略,高优先级的进程会优先得到CPU时间。
  6. 状态信息:进程的状态(如运行、就绪、等待等),这决定了进程在系统中的处理方式。
  7. I/O状态信息:包括打开文件列表、I/O缓冲区等,用于管理进程的输入输出操作。
  8. 其他信息:可能还包括安全信息、进程关系(父进程、子进程)等。

把程序加载到内存之后,操作系统并不认识这些程序,为了更好的管理这些程序,每一个进程都有自己的 PCB,PCB 中记录了进程的信息和属性,这样操作系统才可以管理这些进程,从此之后,对进程的管理,就变成了对 PCB 链表的增删查改

PCB 链表组成了运行队列,运行队列中排队的是 PCB,每个 PCB 都会指向自己的可执行程序,CPU 在进程调度时,让进程去排队,本质上是让进程的 PCB 去排队,而不是可执行程序在排队,CPU在调度一个进程,只要找到PCB就可以,找到PCB就可以找到可执行程序,程序就可以执行了。

在Linux中,PCB 叫做 task_struct.

看见进程

pid

在计算机操作系统中,每个正在运行的进程都会被分配一个唯一的PID。当用户或应用程序需要与某个特定的进程交互时,可以通过PID来指定目标进程。例如,在 Linux 中,可以使用 kill命令加上PID来终止某个进程;使用 ps命令查看当前系统中所有进程的信息,其中包括每个进程的PID。

getpid 函数

getpid 是一个系统调用,用于获取当前进程的进程标识符 PID,需要包含  unistd.h 头文件 ,函数的返回值类型为 pid_t,它是一个整型类型,专门用于存储和处理进程ID,pid_t 通常在 <sys/types.h> 头文件中定义,有时也会在 <unistd.h> 中定义。

用以下代码来查看 pid: 

#include<iostream>
using namespace std;
#include <unistd.h>int main()
{while(1){cout<<"process pid:"<<getpid()<<endl;sleep(1);}return 0;
}
testProcess:test.ccg++ -o $@ $^ -std=c++11.PHONY:clean
clean:rm -f testProcess

 运行代码:

可以看出当前进程的 pid 为 75735,每个进程的 pid 都是不一样的,当我们再次运行同一份代码时,会重新创建进程,此时进程的 pid 和上一次运行时的 pid 是不一样的:

当代码运行起来的同时,命令 while :;do ps ajx | head -1 && ps ajx | grep testProcess | grep -v grep;sleep 1;done 可以帮助我们看到进程的开始和结束:

http://www.ds6.com.cn/news/69119.html

相关文章:

  • 宜昌网站建设市场seo关键词首页排名代发
  • 专业优化网站建设怎么弄一个自己的网站
  • python 网站开发 linux企业宣传片
  • 国家质检总局网站品牌建设关键词优化
  • 创建网站英文万网的app叫什么
  • 做网站需要啥备案之类的嘛网站怎么推广
  • 织梦网站织梦做英文版的网络营销服务外包
  • 商城网站建设是 什么搜索平台
  • 网站开发深圳公司百度推广下载安装
  • 抚州做网站价格多少公司网站建设公司好
  • 成都旅游网站建设规划方案百度代理查询
  • 深圳网站优化哪家好百度百度一下就知道
  • 装饰公司网站开发网上销售哪些平台免费
  • 网盘做网站服务器广告投放平台系统
  • 做网站和商城有什么好处工程建设数字化管理平台
  • 网站建设需要的资质谷歌网页版入口
  • 好网站建设公司服务网络营销软件网站
  • 云南网站建设一度科技公司seo技巧课程
  • 看网站建设公司的网站案例百度推广400客服电话
  • wordpress 汉化 自适应seo课程排行榜
  • 如何用wordpress做一个企业网站怎样进行seo
  • 提供网站建设报价宁波超值关键词优化
  • 凡科建站自助建站平台网络营销工具有哪些
  • 做cpc不做网站可以吗百度推广优化工具
  • 网站建设智推网百度上做优化
  • 制服定做seo关键词选择及优化
  • 敦煌做网站的公司电话营销网站建设
  • 广州市城乡和建设局网站平台推广方式有哪些
  • 家谱网站怎么做河北疫情最新情况
  • 昆明品牌网站建设seo公司推荐推广平台