进程概念

冯诺依曼体系结构

二进制/内存
cpu/内存/输入/输出

操作系统

操作系统 = 操作系统内核 + 一组应用
管理 : 描述 组织被管理的对象
系统调用/库函数

进程

进程
程序运行起来的实体(程序 : 可执行文件,普通文本)
描述进程
task_struct/ 进程控制块/ PCB
1.进程标示符 PID
2.进程状态 运行 就绪 阻塞
3.程序计数器 即将被执行的指令的地址
4.内存指针 指向进程地址空间
5.上下文数据 上次执行时寄存器中的数据
6.IO信息/记账信息
/proc/PID
ll /proc/PID/fd 查看文件描述符 : 标准输入 输出 错误
ps -ef 查看当前系统使用cpu的时间
cpu密集型程序
IO密集型程序
并行/并发
//find / -name linuxsched.h

getpid

man getpid 系统调用
getpid() : 获取当前进程的PID
头文件
getppid 获取当前进程的父进程的PID
bash -> shell
后台进程 sl
前台进程 fp + : 标示前台进程
输入型/输出型/输入输出参数 const int& / int
/ int&
pid_t p = fork(); 创建子进程
两个返回值: 1.返回 0 给自己 2.返回 PID 给父进程
抢占式执行,抢cpu执行:子进程和父进程不一定谁先执行
代码共享 , 数据独有

进程状态

进程状态
(cpu个数少和进程个数多)
R(running): 运行状态:
在就绪队列以及正在cpu上计算的的进程
S(sleep): 睡眠状态
可以中断
D(disk sleep) : 磁盘睡眠状态
等待IO资源的时候,不可中断
T(stopped):停止状态
ctrl + z 转为停止状态
fg 转为运行状态
kill PID : 结束进程
kill -9 PID : 强杀
t(trace) : 跟踪状态
gdb调试
X(dead): 死亡状态
Z(zombie):僵尸状态

孤儿进程:
父进程先于子进程退出
会被1 号进程领养,由init进回收孤儿进程的状态信息
init进程

环境变量

环境变量 : 指定操作系统运行环境的参数
PATH : 命令或可执行程序的搜索路径
HOME : 当前shell的工作路径
LD_LIBRARY_PATH : 动态库静态库的搜索路径
SHELL : 当前shell
命令:
echo:
export: 设置环境变量, 临时生效
export PATH = path
根目录 /etc/bashrc
家目录
~/bashrc 修改环境变量
~/bash_profile
source 使更改生效
env:显示所有环境变量

获取环境变量的方式

命令行参数/环境变量
int main(int argc, char *argv[], char *env[])
env[i]
extern char environ;
environ libc中的全局变量
包含头文件 : <stdlib.h>
getenv : char
getenv(const char
name)
getenv(“PATH”);
包含头文件 : <stdlib.h>

进程地址空间

虚拟地址 -> 页表 -> 物理地址
MMU 给进程发信号,
分段式存储 : 对程序运行友好
段号 段内偏移
段表 : 段号 段的起始地址
分页式存储 : 离散率高, 内存碎片少
把进程地址空间分成页, 物理内存分成块, 页跟块的大小一样
页号 页内偏移
页号 = 虚拟地址 / 块的大小
页内偏移 = 虚拟地址 % 块的大小
页表 : 页号 块号
块的起始地址 = 块的大小 * 块号
物理地址 = 块的起始地址 + 页内偏移
段页式存储 :
段号 段内页号 页内偏移
段表 : 段号 段内页表的起始地址
页表 : 页号 块号
写时拷贝:

进程优先级

ps aux 查看进程
PR 值越小优先级越高
修改 PR(new) = PR(old) + NI
top -r PID NI值
renice -n NI值 -p PID
多级反馈的调度算法
位图, 40个级别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值