next:单步运行,不进入函数内部;setp单步运行,进入函数内部
字符设备文件、块设备文件和网络设备文件
全缓冲,行缓冲,不带缓冲
信号诞生 信号在进程中注册 信号在进程中注销 信号处理函数执行完毕
A从main函数返回。
B调用exit。
C最后一个线程从其启动例程返回。
D接到一个信号并终止。
A pthread_key_create() B pthread_setspecific()
C pthread_getspecific() D pthread_key_delete();
A.消息队列 B.共享内存 C.信号量 D.套接字
A.msgget() B.msgsnd() C.msgrcv() D. msgctl()
进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的一个独立单位。
进程资源由内核空间资源(PCB控制块) 和 用户空间资源
pid_t waitpid(pit_t pid, int *statloc, int options);当第一个参数pid取值为-1时,表示(A)
A等待任一子进程退出,相当于 wait()。
B等待进程组ID与调用进程组ID相同的任一子进程。
C只等待进程ID等于PID的子进程。
D等待指定进程组中的进程,该进程组id等于 pid的绝对值。
若执行成功,父进程中将返回子进程(新创建的进程)的PID,类型为pid_t,
子进程将返回0,以区别父子进程
若执行失败,则在父进程中返回-1,错误原因存储在errno中
int kill(pid_t pid, int signo);当第一个参数pid>0时,表示( A )
A发送信号给进程ID为pid的进程;
B发送信号给进程组ID和该进程相同的进程;
C发送信号给进程组内进程ID为pid的绝对值的进程;
D发送信号给系统的所有进程;
A shmat() B shmdt() C shmctl() D shmget()
A msgsnd() B msgctl() C msgrcv() D msgget()
1. 当有子进程退出时wait返回子进程的pid并且获取到子进程的退出状态
2. 当没有子进程退出时 父进程将阻塞等待子进程退出
3. 当没有子进程时,wait返回-1
如果是在main函数中exit和return都是终止进程 但是return会弹栈 exit不会
如果是在函数中return 返回到上级函数调用的位置,exit会终止进程
父进程先于子进程结束 则子进程称为孤儿进程 由init 0接管并回收其内核资源
僵尸进程 子进程结束但是父进程未回收其内核资源, 可以通过调用wait()或waitpid() 或者使其成为孤儿进程 由操作系统回收其内核资源
不可靠信号 不支持排队 如果在进程屏蔽信号时 给其发送多个不可靠信号,在取消屏蔽后只会接收到一个
可靠信号 支持排队 如果在进程屏蔽信号时 发送多个信号,在取消屏蔽后会按照先后顺序接收到所有可靠信号
信号是一种软中断,用来通知进程发生了异步事件 0~31分为不可靠信号 32~63可靠信号
匿名管道 用于实现有亲缘关系的进程之间相互通信
创建在内核空间,通信结束后消失
无名管道用于实现具有亲缘关系的进程间通信
有名管道用于实现非亲缘关系的进程间通信
有名管道 是一个特殊的文件 结束通信后不会内容消失但文件不消失
无名管道 结束通信后消失
线程是操作系统进程中能够并发执行的实体,是处理器调度和分派的基本单位。
区别 :
1.调度、
在传统操作系统中进程是拥有资源和调度的基本单位
在引入了线程的操作系统中 线程是操作系统分派和调度的基本单位
进程是拥有资源的基本单位
2.并发性
进程之间可以并发执行,在同一进程中的线程也可以并发执行
3.拥有资源
进程是拥有系统资源的基本单位
线程基本上不拥有系统资源,但也拥有其运行所必要的资源,在同一进程中的线程共享进程的地址空间
4.系统开销
创建或撤销进程时,系统都要为其创建和回收进程控制块(PCB)
进程的创建和撤销的开销远大于线程的开销
在进程切换时,涉及到当前进程CPU环境的保存以及新被调度运行进程的CPU环境的设置,而线程的切换则仅需保存和设置少量寄存器内容
进程切换的开销也是远大于线程的
不同点
signal()
安装的信号不能向信号处理函数传递信息
sigaction()
可设置进程的信号掩码,返回设置之前的sigaction结构
安装的信号可以向信号处理函数传递信息
相同点
都可以为指定的信号设置信号处理函数
共用同一个内核函数do_sigaction()