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

linux进程详解

冯诺依曼体系结构

输⼊设备:包括键盘, ⿏标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出设备:显⽰器,打印机等
关于冯诺依曼,必须强调⼏点:
1、这⾥的存储器指的是内存
2、不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)
2、外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。
总结:⼀句话,所有设备都只能和内存打交道

操作系统(Operator System)

概念

在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的“搞管理”的软件。操作系统包括: 
1、内核(进程管理,内存管理,⽂件管理,驱动管理)
2、其他(例如函数库,shell程序等等)

设计OS的⽬的

1、对下,驱动程序与硬件交互,管理所有的硬件资源
2、对上,管理程序提供接口,为⽤⼾程序(应⽤程序)提供⼀个良好的环境
系统调⽤和库函数概念
操作系统分为内核和其他,其中内核负责各种东西的管理,并提供了一系列接口,称为系统调用,库函数是对系统调用的二次封装,命令的本质是可执行程序,也是对系统调用的封装

进程

基本概念

担当系统资源(CPU时间,内存)分配的实体,由内核数据结构pcb和代码与数据构成。

描述进程的内核数据结构-PCB(进程控制块

Linux操作系统下的PCB是: struct task_struct

task_ struct

标⽰符: 描述本进程的唯⼀标⽰符,⽤来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执⾏的下⼀条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下⽂数据: 进程执⾏时处理器的寄存器中的数据[休学例⼦,要加图CPU,寄存器]。

查看进程

1. 进程的信息可以通过 /proc 系统⽂件夹查看
查看特定一个进程
2. ⼤多数进程同样可以使⽤ps命令来获取信息
-a显示由终端控制的进程,-x显示不由终端控制的进程,-u显示进程对应的用户
-p指定进程id

-j以作业格式打印

通过系统调⽤获取进程标⽰符

进程id(PID)   getpid()
⽗进程id(PPID)  getppid()
两个系统调用在unistd.h中,可以用man来查看

通过系统调⽤创建进程-fork


1.fork是一个系统调用,父进程调用fork,触发软中断,cpu陷入内核,将cpu的寄存器组保存在父进程的内核栈中,更新cpu的寄存器,栈指针是pcb中保存的内核栈栈顶,pc是中断向量表的入口函数,去中断向量表中找软中断处理函数,软中断处理函数根据cpu寄存器里的系统调用号,去系统调用表里执行对应系统调用,创建子进程pcb,拷贝父进程的进程地址空间mm_struct和文件描述符表files_struct,拷贝父进程内核栈,将父进程内核栈里的返回值寄存器里的值改成子进程pid,将子进程内核栈里返回值寄存器值改成0,更新子进程pcb中的寄存器组,使pc指向fork后下一条指令,然后将子进程pcb加入运行队列,等到子进程被调度,cpu就会从子进程pcb中获取寄存器

2.父进程fork系统调用执行完后从内核栈中恢复寄存器,然后返回用户态

3.子进程被调度cpu从其pcb的thread_struct中获取寄存器,然后执行fork后的下一条指令,也就是从内核栈恢复寄存器,然后返回用户态,在给int pid 写返回值时触发缺页中断,因为int pid所在的虚拟页对应的页表项中没有写权限,执行中断方法,找一个新的物理页拷贝原来的物理页,然后页表项指向新物理页,然后再写返回值给int pid,这就是为什么父子进程中int  pid变量地址一样,因为是虚拟地址,但是int  pid值却不一样,因为同样地址的虚拟页,页表项中对应的物理页不一样,所以有两个值,这两个值在不同的物理页

总结:pcb中的那套寄存器是用来实现进程调度的,cpu从进程的内核栈中的恢复的那套寄存器才是返回到用户态的

写时拷贝


fork创建子进程时pcb的mm_struct采用浅拷贝的模式,也就是说虚拟地址空间结构(vm_area_struct)和页表映射物理页(页表)父子进程是一样的,而且拷贝后会将父子进程的页表权限全部设为只读,当其中一个进程往某个地址写入时,mmu硬件找虚拟地址对应页表项,查看权限时是只读,mmu硬件会缺页异常,硬件电路已经编好了出现缺页异常怎么做了,就是cpu会陷入内核,执行14号中断函数,找一个新物理页,拷贝,然后修改页表项
 

进程状态

进程退出 和 僵尸进程、孤儿进程-CSDN博客

进程调度

进程的调度_进程的活动队列-CSDN博客

查看进程优先级和nice值

ps -l 以长格式打印进程信息

竞争、独⽴、并⾏、并发

1、竞争性: 系统进程数⽬众多,⽽CPU资源只有少量,甚⾄1个,所以进程之间是具有竞争属性的。
2、独⽴性: 多进程运⾏,需要独享各种资源,多进程运⾏期间互不⼲扰
3、并⾏: 多个进程在多个CPU下分别,同时进⾏运⾏,这称之为并⾏
4、并发: 多个进程在⼀个CPU下采⽤进程切换的⽅式,在⼀段时间之内,让多个进程都得以推进,称之为并发


环境变量和命令行参数

命令行参数和环境变量 -CSDN博客

进程地址空间

进程地址空间-CSDN博客
http://www.dtcms.com/a/453912.html

相关文章:

  • 【无约束优化】多维搜索——梯度方法
  • AI作为操作系统已经不能阻挡了,尽管它还没来
  • 哪个网站建设公司贵阳网站建设公司排行
  • 建设银行官方网站企业网银苏州市工程造价信息网官网
  • API 类别 - 选择器
  • 网站建设商业阶段谷歌网站提交
  • VSCode下json文件自动排版的实现(VSCODE安装美化JSON插件)
  • 深圳做网站推广公司微信小程序商城需要多少钱
  • 在Vue项目中构建后端配置的动态路由及权限控制体系
  • 鄢陵县网站苏州商城网站制作
  • grep 命令使用手册详解
  • 青岛市黄岛区城市建设局网站网站关键词百度首页消失
  • 国外服装设计网站网销网站建设流程图
  • 牛客算法_堆栈
  • 2025-10-07打包时遇到Failed to execute script pyi rth tkinter问题
  • 磁共振成像原理(理论)21:K空间采样 (Sampling of k-Space) - k空间信号的采样要求
  • 浅谈 gRPC——以 Python 项目 secure_services_py 为例
  • 2025版基于springboot的美食食品商城系统
  • SpringBoot + PostgreSQL 密码认证失败 Windows 系统解决方案
  • 辽宁朝阳网站建设公司中国铁建门户登录
  • C# BLF 文件格式分析
  • C++基础:(八)STL简介
  • 深圳东门地铁站叫什么桂林出网站
  • 2025年--Lc169--H36.有效的数独(矩阵)--Java版
  • 网站建设工作总结培训上海对外经贸大学
  • 有什么做心理咨询的好网站网站开发与维护能做什么职业
  • 【Nest】登录鉴权
  • 托福口语【2】
  • 主主复制·(互为主从)·高可用·keepalived 故障切换演示 并且描述故障切换
  • 营销网站建设流程wordpress设置客户端缓存时间