进程 线程 纤程

进程 线程 和纤程
1、进程和线程的区别:
     进程是系统分配资源的基本单位,线程是执行调度的基本单位;进程享有独立的内存资源,线程共享进程的资源,线程没有自己独立的内存空间;
2、纤程:用户态的线程,线程中的线程,切换和调度不经过操作系统内核;
      优点:1、占用资源少,线程大约需要1M的资源,而纤程只需要4k;
                 2、可以启动很多个线程同时执行,线程启1万个就很卡了,但是纤程10万+;
                 3、切换比较简单;
3、纤程的应用场景:
                 1、很短很简单的计算任务,不需要和内核打交道,并发量高;
4、linux中是如何创建和启动进程的:
      通过系统函数fork()创建 exec()启动,退出可以用exit();
      从A中 fork B,那A即为B的福进程;
      进程资源为独立的地址空间 内核数据结构(进程描述符)全局变量 数据段
      进程描述符:PCB(Process Control Block)
5、僵尸进程: 父进程产生子进程后,会维护一个子进程的PCB结构,子进程退出后,由父进程释放,如果父进程没有释放,那么子进程成为一个僵尸进程 zombie.c
ps -ef|grep defunct 查询  需要用wait()方法释放;
6、孤儿进程:子进程结束之前,父进程就已经退出,该进程就是孤儿进程;孤儿进程会成为init进程(或特殊进程)的孩子,由1号进程维护 orphan.c
7、进程的任务调度:内核进程调度器决定,该哪一个进程运行,何时开始运行,运行多长时间。
8、多任务(multitasking)
     非抢占式(cooperation multitasking) :除非进程主动让出cpu(yielding)否则将一直运行。
     抢占式(preemptive multitasking):由进程调度器强制开始和结束某一进程的执行。
9、进程类型:
     IO密集型 大部分时间用于等待IO
     CPU密集型 大部分时间用于计算
10、进程优先级
     实时进程 优先于 普通进程
11、linux默认的调度策略
     对于实时进程:使用SCHED_FIFO(先进先出)和 SCHED_RR(轮询)两种
     对于普通进程:使用CFS completely fair schedule
     其中的你最高的FIFO,这种进程除非自己让出CPU否则Linux会一直执行它除非更高等级的FIFO和RR抢占它,RR只是这种线程中是同级别FIFO的平均分配,只有实时进程主动让出,或者执行完毕后,普通进程才有机会运行。
     FIFO(First In First Out)RR(Round Robin)

posted @ 2020-05-07 23:26  小魔魔  阅读(558)  评论(1)    收藏  举报