注:学习随笔
1、进程和线程的区别:
- 进程是系统分配资源的基本单位,线程是执行调度的基本单位;
- 进程享有独立的内存资源,线程共享进程的资源,线程没有自己独立的内存空间;
- 线程是运行在进程上的,线程的创建需要惊动操作系统内核 老大,比较耗费资源
2、纤程:用户态的线程,线程中的线程,切换和调度不经过操作系统内核;
优点:1、占用资源少,线程大约需要1M的资源,而纤程只需要4k;
2、可以启动很多个线程同时执行,线程启1万个就很卡了,但是纤程10万+;
3、切换比较简单;
应用场景:很短很简单的计算任务,不需要和内核打交道,并发量高;
3、linux中是如何创建和启动进程的:
通过系统函数fork()创建 exec()启动,退出可以用exit();
从A中 fork B,那A即为B的父进程;
进程资源为独立的地址空间 内核数据结构(进程描述符)全局变量 数据段
进程描述符:PCB(Process Control Block) 进程控制块
5、僵尸进程: 父进程产生子进程后,会维护一个子进程的PCB结构,子进程退出后,由父进程释放,如果父进程没有释放,那么子进程成为一个僵尸进程 zombie.c
Linux中 ps -ef|grep defunct 可以查看僵死进程, 需要用wait()方法释放;
6、孤儿进程:子进程结束之前,父进程就已经挂了,该进程就是孤儿进程;
进程调度
- 内核进程调度器决定,该哪一个进程运行,何时开始运行,运行多长时间。
- 实时进程 优先于 普通进程(CFS—— Completely Fair Scheduler)
- 实时(急诊):
- 优先级分高低 (FIFO策略)
- 优先级一样 RR(Round Robin)轮询策略
- 普通 : CFS策略—— 按优先级分配时间片的比例,记录每个进程的执行时间。如果有一个进程执行时间 不到她应该分配的时间片比例,优先执行