zoukankan      html  css  js  c++  java
  • 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中的任意一个,具体由操作系统调度算法决定。

  • 相关阅读:
    OA
    Asp.net 将js文件打包进dll 方法
    ASP.NET编程中的十大技巧
    jquery 1.2.6 中文注释解析
    javascript 构造函数和方法
    asp.net命名空间
    .ascx和网页.aspx之间的交互方式
    windows 2003局域网共享设置
    javascript高级编程
    程序员需要具备的基本技能
  • 原文地址:https://www.cnblogs.com/zhangmingyong/p/11508124.html
Copyright © 2011-2022 走看看