2019.09.11学习整理

2019.09.11学习整理

进程基础

什么是进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

进程的概念

  1. 进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
  2. 进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

操作系统引入进程的概念的原因

从理论角度看,是对正在运行的程序过程的抽象;

从实现角度看,是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。

进程的特征

  • 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
  • 并发性:任何进程都可以同其他进程一起并发执行
  • 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
  • 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
  • 结构特征:进程由程序、数据和进程控制块三部分组成。

多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

进程与程序中的区别

程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。

程序可以作为一种软件资料长期存在,而进程是有一定生命期的。

程序是永久的,进程是暂时的。

注意:同一个程序执行两次,就会在操作系统中出现两个进程,所以我们可以同时运行一个软件,分别做不同的事情也不会混乱。

开启子进程的方式

方式一

from multiprocessing import Process
import time

def task():
    print('进程 start')
    time.sleep(2)
    print('进程 end')

if __name__ == '__main__':
    p = Process(target=task)
    p.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系。
    time.sleep(5)
    print('主进程/父进程')

方式二

from multiprocessing import Process
import time

class Test(Process):
    def __init__(self,sex):
        super().__init__()
        self.sex = sex

    def run(self):
        print(f'子进程的性别是{self.sex} start')
        time.sleep(2)
        print('子进程 end')
if __name__ == '__main__':
    p = Test('女')
    p.start() # 向操作系统 发送开启子进程的请求
    print('主进程')

进程的并行和并发

并行: 并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU )

并发: 并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A ,交替使用,目的是提高效率。

并行和并发的区别

并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器。

并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个session。

串行: 一个完完整整的执行完了再执行下一个.

多道技术(了解):

空间复用: 共用一个内存条,每一个进程都有自己独立的内存空间,互不干扰,物理级别的隔离.
时间复用: 共用了一个cpu

cpu切换(掌握):

io的时候,占用时间过长切换,

三 现代计算机:

? 现在的主机一般是多核,那么每个核都会利用多道技术
? 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个
? cpu中的任意一个,具体由操作系统调度算法决定。

原文地址:https://www.cnblogs.com/zhangmingyong/p/11508124.html

时间: 2024-10-10 12:34:30

2019.09.11学习整理的相关文章

2019.09.24学习整理 数据库的字段操作、多表关系、外键

目录 字段操作 多表关系 外键 一对一 无级联关系 有级联关系 一对多 多对多 数据库的字段操作.多表关系.外键 字段操作 create table tf1( id int primary key auto_increment, x int, y int ); #修改 alter table tf1 modify x char(4) default ''; alter table tf1 change y m char(4) default ''; #增加 mysql>: alter table

2019.08.07学习整理

2019.08.07学习整理 字符编码 1.什么是字符编码 字符编码是将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表. 2.字符编码发展史与分类 计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系.最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号. 当然我们编程语言都用英文没问题,ASCII够用,但是在处理数据

2019.08.27学习整理

2019.08.27学习整理 什么是继承 是一种新建类的方式,继承了一个类,类中的属性和方法就在子类中 父类/基类 子类/派生类 新式类:只要继承了object类,就是新式类,在python3中,默认继承object类 -Python3中:默认继承object class A: pass -python2中,需要显示的指定继承object --经典类:没有继承object的类,就是经典类 -python3中没有经典类 -python2中才有 利用继承减少代码冗余 #继承重用父类方法方式一:指名道

2019.08.29学习整理

2019.08.29学习整理 绑定方法与非绑定方法 绑定方法 对象绑定方法 类的绑定方法 绑定方法:特殊之处,绑定给谁就是谁来调,并且会把自身调过来 类的绑定方法 绑定给类,类来调用,会把类自身传过来 类的绑定方法用在什么地方 不需要通过对象,只需要通过类就能获取到一些东西的时候,用类的绑定方法 类的绑定方法,可以由对象来调 class Person: ''' 注释的内容 ''' def __init__(self,name,age): # print(self) self.name=name

2019/09/11最新进展

今日完成的工作如下: 1.写实验报告中Android Studio开发部分. 2.今天凌晨把之前出错的登陆注册界面改好了: 3.写安装部署说明书. 今晚及明天计划: 1.准备明天的答辩. 2.把论文的参考文献完成. 心得体会: 感觉自己是一个多余的人 有很多多余的想法 多余的情感 没办法像其他 成功人士 一样冷静理性 我也不知道该怎么办 原文地址:https://www.cnblogs.com/love-is-a-deal/p/11508721.html

2019/12/11学习内容摘要(Linux系统用户与用户组管理①)

一,认识/etc/passwd和/etc/shadow 1. /etc/passwd :文件中保存系统中所有的用户和用户的主要信息. 在命令行输入 cat /etc/passwd  | head  (‘ | ’ 为管道符,作用是把前面的的命令输出在输入给后面的命令 ) 由图所示 /etc/passwd/被:分为7个字段 其含义如下 第一个字段为用户名(图中为root),是代表用户账号的字符串. 第二个字段是该账号的口令,这里的"x"代表的是密码标志,而不是真正的密码,真正的密码是保存在

2019.09.09学习整理

2019.09.09学习整理 基于socket套接字的UDP协议 UDP套接字示例 客户端 import socket cli = socket.socket(type=socket.SOCK_DGRAM) while True: msg = input('>>:').strip() cli.sendto(msg.encode('utf-8'), ('127.0.0.1', 8003)) data,ser_addr=cli.recvfrom(1024) cli.close() 服务端 impo

【英语学习】2016.09.11 Culture Insider: Teacher's Day in ancient China

Culture Insider: Teacher's Day in ancient China 2016-09-10 CHINADAILY Today is the 32nd Chinese Teacher's Day – a festival celebrating the 2,300-year tradition of respecting teachers and education in China. It's similar to the birthday of Confucius o

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package