


1)APP安装的越来越多,手机或者电脑
等终端设备的质量会发生变化吗?
E=mc^2
ipython3(python3):
1/3
0.3333333333333333
0.3333333333333333*3
2)什么是程序?
一个程序就是存放到磁盘上的文件,由0和1组成;
静态的概念
3)什么是进程?
一个程序运行起来,我们就称作一个进程;
动态的概念
进程的特点:
动态性
独立性 想想各部门的类比;
并发性
结构性
进程的结构:
进程包含:
PCB(Process Control Block):
1)pid, pname;
2)进程的调度信息(进程状态信息,优先级);
进程状态信息:
****五态:新建;就绪;执行;等待/阻塞;终止;
优先级:在操作系统中可以用数字来表示
在Ubuntu中,优先级-20--19之间, 数值越小优先级越高,
-20最高;
在Windows中,优先级0-31之间;数值越大优先级越高,
31最高;
3)进程控制信息:
进程的资源(CPU,内存,磁盘)等等;
4)处理机的信息(指令计数器,通用寄存器)等等;
查看信息的方法:
Windows下资源管理器;
Ubuntu:
ps aux 进程快照;
top 类似于资源管理器(动态);q退出
htop
数据段;
代码段;
#char password[80];
#if(yourPass == password)
程序与进程的关系:
一对一;
一对多;
多对一;
多对多;
以上都不是;
4)类比一些多进程多线程中的概念:
OS(Operating system)操作系统: 公司;
CPU(中央处理器),I/O(输入输出): 公司某些资源;
单核CPU
进程:公司的部门;
线程:公司的人,干活的实体;
锁: 厕所里的锁;健身房,餐厅的锁;
思考: 程序可以类比成什么?
多任务系统:多个事情需要执行;
多用户:
并发: 单核是分时占用CPU等资源,
事实上某一个时刻只有进程在执行;
并行: 多核是真正的多个进程并行执行;
----------问题-----------------
1)1+1/2+1/4+...+1/2^n = 2
2-2*(1/2)^n
2)1+1/2+1/3+...+1/n -> 无穷大
我们学会了编程,要知道怎么用计算机工具,
工程化的思想超越我们的直觉。
阻塞与非阻塞:
阻塞: 资源被占用,死等;
非阻塞: 资源被占用,不等待,做其他事情;
几类进程:
父子关系;
兄弟关系;
销售部门:总部,1部,2部;
1)**孤儿进程:父进程挂了,子进程还在;
2)****僵尸进程:子进程挂了,父进程还在,
父进程没有给子进程善后;
****慎用或不用terminate;
3)****守护进程:
在后台运行的程序,跟着父进程一起消失的进程,
这种进程可以随时死亡;
如果我们的子进程要处理某些状态,操作I/O,
建议不要设置成daemon进程,因为它可能随时死亡;
****multiprocessing包:
Process:
Process(target=函数名, args=(参数元组))
start()
#terminate() 慎用或不用
daemon 守护进程可以在
join()
后台在一些辅助性的事;
****主进程对子进程join的话,
子进程的daemon就会失效;
daemon设置在start之后是无效的;
默认情况下multiprocessing中主进程
会等待子进程,显示等待某个进程,可以使用join;
****multiprocessingTimer.py
-----------作业-----------
1) 实现一个定时器,每隔半小时提示你休息一下眼睛;
面向对象的方式来实现;
实现自己的Process类,重写run方法;