Python-操作系统、进程概念

操作系统

多道操作系统

第一次提出了多个程序可以同时在计算机中计算

  • 1.遇到IO就让出cpu

  • 2.把cpu让给其他程序,让其他程序能够使用cpu

  • 3.cpu的让出这件事要占用时间

  • 4.两个程序来回在cpu上切换,不会乱

    • 每个程序有独立的内存空间

    • 每个程序在切换的前后会把当前的状态记录下来

cpu计算和不计算(IO)的操作

IO操作不占cpu

IO操作(网络操作  文件操作):输入输出(相对内存)

扫描二维码关注公众号,回复: 9620547 查看本文章
  • 阻塞:sleep/input/recv/accept/recvfrom/是不需要cpu参与的

  • 对文件的读取:对硬盘的操作一次读取相对与90w条代码

input:向内存输入数据(从硬盘)

read/load/input/recv/recvfrom/accept/connect/close

output:从内存输出数据

write/dump/print/send/sendto/accept/connect/close

所有的IO操作本质都是文件操作

input/print

input是写入文件,然后通过读取文件把输入的内容加载到内存

print是直接写入文件,然后通过文件展示给用户看

socket中的交互方法:都是文件操作

send是向缓存文件中写

recv是从缓存文件中读

也就是说只要涉及到IO操作   至少就是一个0.009s = 就是cpu执行90w条python代码的时间

cpu只计算读取到内存中的数据,其他没有读取到内存的不会计算

时间片轮转算法 -- 分时操作系统

  • 1.时间片到了才让出cpu

  • 2.cpu的让出这件事  占用时间

  • 3.降低工作效率,提供用户体验

单核 1cpu 只能跑一个程序

进程的概念

程序与进程(计算机最小的资源分配单位)

运行中的程序就是进程

进程与进程之间的数据是隔离的

线程(计算机中能被操作系统调度的最小单位)

每个程序执行到哪个位置是被记录下来的

在进程中  有一条线程是负责具体的执行程序的

进程是被操作系统管理的

进程的调度(操作系统完成的):

被操作系统调度的,每个进程中至少有一个线程

短作业优先算法

先来先服务算法

时间片轮转算法

多级反馈算法

进程的启动   销毁

进程的启动:1.交互(双击) 2.在一个进程中启动另一个   3.开机自动启动

负责启动一个进程的程序     被称为一个父进程

被启动的进程     就是一个子进程

销毁:交互 被其他进程杀死(在父进程结束子进程) 出错进程结束

父子进程

父进程开启子进程

父进程还要负责对结束的子进程进行资源的回收

进程id processid pid

在同一台机器上 同一时刻 不可能有两个重复的进程id

进程id不能设置    是操作系统随机分配的

进程id随着多次运行一个程序可能会被多次分配   每一次都不一样

进程的三状态图

就绪ready 运行run 阻塞block

import os
import time
print(os.getpid())
print(os.getppid()) # parent process id
time.sleep(100)

模块mutilprocessing模块:内置模块

multiple  多元化

processing   进程

import os
import time
from multiprocessing import Process
def func():
   """
  在进程中执行的func
  :return:
  """
   print('子进程:',os.getpid(),os.getppid())
   time.sleep(3)
if __name__ == 'main':
   p = Process(target=func)
   p.start()
   print('主进程:',os.getpid())
   
给子进程传参
def foo(a):
   """
  在进程中执行的foo
  :return:
  """
   print('子进程:', a)
   time.sleep(3)
if __name__ == '__main__':
   p = Process(target=func, args=(1,))
   p.start()

并行:多个程序 同时被cpu执行

并发:多个程序看起来在同时运行

同步:一个程序执行完了再调用另一个 并且在调用的过程中还要等待这个程序 执行完毕

异步:一个程序执行完了在调用另一个 但是不等待这个任务完毕 就继续执行

阻塞:cpu不工作

非阻塞:cpu工作

猜你喜欢

转载自www.cnblogs.com/womenzt/p/12426531.html