笔记day1多进程

1)聊聊计算机程序是什么?进程的定义是什么?
程序:存储在电子设备上0与1有序组合;


进程:程序在操作系统(OS)中运行的一个抽象;
抽象是一种近似,一种简化,帮助我们认识事物和使用事物;


程序与进程的关系
   一对一, 一对多;
   多对一, 多对多;
   以上都不是;


2)如何对程序,进程和线程进行一种抽象类似的近似;
OS操作系统:公司
CPU,I/O:  公司的资源
进程:      公司的部门
部门有自己的办公区,地点;部门有自己的厕所,有自己的餐厅,
健身房;部门要有人,至少有一个人;
线程:      部门的人  
人就是干活的;
锁:        部门的厕所那把锁;健身房的锁;餐厅的锁;
资源是有限的,所以我们要管理资源;管理资源的方式就是加锁;
锁必然会有钥匙;


3)进程:OS对程序执行的一次抽象;
A.进程的组成:
数据段,
代码段,Shell Code: char a[80];
进程控制块(PCB):
  1)进程的标识符pid, name;
  2)进程的调度信息(进程的状态,进程的优先级,进程的关系)
  3)进程控制信息(资源清单,信号量,互斥量,锁的信息,虚拟的地址,等)
  4)处理机的信息(通用寄存器,指令计数器等);




实验:


B.几类特殊的进程:
孤儿进程:父进程创建子进程,自己被杀或者自杀;
僵尸进程: 父进程创建子进程,子进程被杀或者自杀,父进程没有上报,没有告诉系统回收资源;


4)进程的状态:
三态:就绪,执行,等待/阻塞;


五态:新建,就绪,执行,等待/阻塞,终止;


程序与进程对应关系?
   一对一, 一对多;
   多对一, 多对多;
   以上都不是;


5)解释几个名词:
多任务,并发,并行;
异步与同步:  
阻塞与非阻塞:一直等就是阻塞,干其他事就是非阻塞;


-------------------
面试题:
 1)程序与进程的区别;
 2)并发,并行;阻塞与非阻塞;异步与同步的区别;
 3)死锁是怎么回事,怎么解决死锁?
解决死锁的方案
   1.避免互斥 避免资源被一个进程使用;缺点 和资源本身的性质有关系;
   2.资源获取的原子性:保证所有的资源都拿到,否则都不要;
                        缺点 拿资源的效率不高
   3.让资源有序获取: 缺点 拿资源的效率不高
银行家算法;
上面3个在设计上尝试避免死锁发生;                   
   4.请求与保持条件 timeout, 调度算法去处理,该放手就放手;
                        缺点 确定谁放手;
第4个是发生时怎么补救;




Python:  CPython,Jython,pypy;


if, while, =; 图灵完备;
------------编程语言的层次-----
   低级语言 机器语言,汇编语言;优点:快,开发效率低;
                                缺点  不可移植;
   高级语言 C,C++,编译型语言;优点 开发效率高,
                                缺点 慢相对低级语言;
   Java,Python;编译解释性语言;编译过程可以优化;
   脚本语言 JS,VB, 解释性语言;
   shell powershell, .bat, BShell,轻量级粘合语言; 
 
fork创建
6)编程实践:threading
A.Process类的使用:myTimer.py



Python daemon进程: 
    1.主进程已结束,子进程就跟着结束;
    2.可以随时被杀死;
    3.写在start之前;
    4.后台进程;
p.join()会让父进程等待子进程,是让daemon失效;

笔记day1多进程


队列:FIFO(First In First Out) 先进先出;
栈:  LIFO (Last In First Out) 后进先出;
优先队列 priority Queue;




B.进程调度:
时间片:就绪等待执行等待的东西;
        优先级: