UNIX进程学习笔记(一)

嵌入式基础笔记:进程的学习(一)

学习内容:

  1. 进程的概念
    程序:磁盘上的可执行文件
    |加载
    v
    进程:内存中的指令和数据。
    | … ^
    v … |访问
    CPU— +

  2. 进程的分类
    交互式进程:由Shell启动,借助标准I/O与用户交互。
    批处理进程:在无需人工干预条件下,自动运行批量处理。
    守护(精灵)进程:后台服务。

  3. 进程快照
    (1)ps -显示当前用户拥有控制终端的进程信息
    (2)ps axuw - BSD风格选项 a:所有用户 x:包括控制终端和无控制终端进程 u:详细信息 w:更大列宽
    (3)ps -efFl -SVR4风格选项 e:所有用户的所有进程 f:完整格式 F:更完整格式 l:长格式
    (4)USER/UID:进程的实际用户ID (5) PID:进程标识 (6) %CPU/C:CPU使用率
    (7)%MEM:内存使用率 (8)VSZ:(virtual size)虚拟内存大小
    (9)RSS:半导体物理内存大小 (10)TTY:终端次设备号 ttyn -物理终端 pts/n-虚拟终端 ?-无控制终端
    (11)START:启动时间 (12)TIME:运行时间 (13)COMMAND/CMD:启动命令
    (14) F:进程标志 1-产生子进程 4-拥有ROOT特权 (15)PPID:父进程PID
    (16)NI-进程nice值 (17)PRI-进程优先级=80+nice,(小)大

  4. STAT/S:进程状态
    (1)O-就绪,等待被调度 (2)R-运行 (3)S-可唤醒睡眠,获取资源或受到信号,被唤醒。
    (4)D-不可唤醒睡眠,仅被wake_up系统调用唤醒(装睡的人) (5)T-暂停,SIGSTOP暂停,SIGCONT运行
    (6)W-等待内存分页 (7)X-终止且被回收,不可见 (8)Z-僵尸,已退出,未被回收
    (9)<-高优先级 (10)N-低优先级 (11)s-会话首进程 (12)l-多进程化
    (13)±前台进程组
    5.浅学俩linux命令:ps和kill
    常用指令: ps -A 显示所有进程信息
    ps -u root 显示指定用户信息
    ps -ef 显示所有进程信息,连同命令行
    ps -ef|grep ssh ps 与grep 常用组合用法,查找特定进程
    ps -l 将目前属于您自己这次登入的 PID 与相关信息列示出来
    ps aux 列出目前所有的正在内存当中的程序
    kill: kill -l 所有信号的列表
    kill [信号或选项] PID(s) 命令格式(可以查看信号作用)
    kill SIGKILL PID或kill -9 PID 杀掉一个进程
    6.父子孤尸
    父进程创建子进程,子进程继承父进程。
    父进程可以创多子进程,子进程仅有一个父进程。
    进程树(PID=0)
    init(PID=1)
    xineted
    in.telnetd <- 远程登录
    login <-用户名和密码
    bash <-Shell命令:ls
    ls ->显示目录条目清单
    父子:父进程在创建子进程后依然存在,可以和子进程交互。
    新旧:旧进程在创建新进程,旧进程会消失。

孤儿进程:父进程创建子进程后,子进程和父进程同时运行,父进程先于子进程终止,子进程成为孤儿进程,同时被init进程 收养,init进程又叫孤儿院进程。

僵尸进程:子进程先于父进程终止,子进程成为僵尸进程,不再活动,但是,也会占用系统资源,直到父进程或init进程回收为止

7.进程的各种ID
系统内核会为每个进程维护一个进程表项,ID包括:
进程ID:系统为每个进程分配ID,分配到不能在增加了,再回头找已被释放的进程ID。
父进程ID:父进程的PID,在创建子进程过程中被初始化到子进程的进程表项中。
实际用户ID:启动该用户进程的用户ID。
实际组ID:启动该用户进程的用户组ID。
有效用户ID:一般取自实际用户ID,当该进程可执行文件设置用户ID,就取自可执行文件用户ID。
有效组ID:一般取自实际用户组ID,当该进程可执行文件设置用户组ID,就取自可执行文件用户组ID。
一个进程的能力和权限,由有效用户ID和有效组ID。
C语言函数调用
#include<unistd.h> pid_t getpid(void);//返回调用进程的PID pid_t getppid(void);//返回调用父进程的PID pid_t getuid(void);//返回调用进程的实际用户ID pid_t getgid(void);//返回调用进程的实际用户组ID pid_t geteuid(void);//返回调用进程的有效用户ID pid_t getegid(void);//返回调用进程的有效用户组ID
8.创建子进程
产生进程分支(fork)
pid_t fork(void)//成功 父进程返回子进程PID,子进程返回0,失败返回-1.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值