进程控制块

进程基础

时光毁灭记忆、已成空白 提交于 2019-12-04 09:07:21
进程基础 一、操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统,点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。 1.1 必备的理论基础 操作系统的作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口 管理、调度进程,并且将多个进程对硬件的竞争变得有序 多道技术: 产生背景:针对单核,实现并发 ps:现在的主机一般是多核,那么每个核都会利用多道技术。有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。 空间上的复用:如内存中同时有多道程序 时间上的复用:复用一个cpu的时间片 强调:遇到io切换,占用cpu时间过长也切换,核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行。 二、什么是进程 进程(Process

python学习笔记之---多进程

我与影子孤独终老i 提交于 2019-12-04 05:42:27
首先,思考多进程、多线程、协程的区别? 其次,什么时候该用哪种模式? 进程:一个程序在计算机里面的一次运行。 线程:进程中调度执行的最小单位。 多进程:利用多核cpu,硬件的计算能力变强了。 程序的计算要求比较高的时候。 多线程:一核cpu,硬件的计算能力变弱了。 不是强调计算能力,而是强调多io操作的时候。(什么是IO?输入,输出:从键盘接收一个东西叫输入,打印一个东西叫输出) 多个线程之间做切换,比协程的切换效率要低一些。 协程: 本质是单线程,比多线程的效率高 单线程来实现不同任务的切换,是任务本身来实现的。 多io操作。 多进程编程会比多线程编程麻烦:因为多进程之间是无法共享一个变量的,多线程之间可以共享变量(同一个进程里)的使用,比较麻烦。 什么时候该用哪种模式呢? 计算密集型的任务时使用多进程,多核cpu计算效率更高 做多io操作的时候用线程或者协程都可以,但是对于多io来说协程的效率比多线程更高一些,不过同时协程的复杂度也比多线程更高一些 区别是什么? 线程必须运行在进程里面,一个进程至少有一个线程。 进程是操作系统分配资源的最小单位。 一个进程中的不同线程,会共用一个进程中的资源。 并发和并行什么区别: 并发:一起执行,并不一定是在某一时刻就同时执行 并行:在同一时刻执行。 多进程、多线程、协程都是用来提升并发性的。 同步:注册和登录,必须按同步是按顺序执行

同一进程中的线程究竟共享哪些资源

最后都变了- 提交于 2019-12-04 01:00:37
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和 栈 ),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程; 同一个进程中的多个线程之间可以并发执行. 进程在执行过程中拥有独立的内存单元,而该进程的多个线程共享内存,从而极大地提高了程序的运行效率。 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 在很多现代操作系统中,一个进程的(虚)地址空间大小为4G,分为系统(内核?)空间和用户空间两部分,系统空间为所有进程共享,而用户空间是独立的,一般WINDOWS进程的用户空间为2G。 一个进程中的所有线程共享该进程的地址空间,但它们有 各自独立的(/私有的)栈(stack) ,Windows线程的缺省堆栈大小为1M。堆(heap

并发编程71道

不羁岁月 提交于 2019-12-03 16:55:41
转 https://www.cnblogs.com/lfs2640666960/p/11488629.html 金九银十跳槽季已经开始,作为 Java 开发者你开始刷面试题了吗?别急,我整理了71道并发相关的面试题,看这一文就够了! 1、在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。 两者的区别: 虚拟机(JVM)何时离开,Daemon是为其他线程提供服务,如果全部的User Thread已经撤离,Daemon 没有可服务的线程,JVM撤离。也可以理解为守护线程是JVM自动创建的线程(但不一定),用户线程是程序创建的线程;比如JVM的垃圾回收线程是一个守护线程,当所有线程已经撤离,不再产生垃圾,守护线程自然就没事可干了,当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。 扩展:Thread Dump打印出来的线程信息,含有daemon字样的线程即为守护进程,可能会有:服务守护进程、编译守护进程、windows下的监听Ctrl

2019-2020-1学期 20192426 《网络空间安全导论》第五周学习总结

拟墨画扇 提交于 2019-12-03 15:31:36
第十章 操作系统 1.操作系统的角色 应用软件(application software) :帮助我们解决现实世界问题的程序。 系统软件(system software) :管理计算机系统并与硬件进行交互的程序。 操作系统(operating system) :管理计算机资源并为系统交互提供界面的系统软件。 一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。计算机硬件是靠电线连接的,初始时载入永久存储器(ROM)中存储的一小组系统指令。这些指令将从二级存储器(通常是硬盘)中载入大部分系统软件。最终将载入操作系统软件的所有关键元素,执行启动程序,提供用户界面,系统就准备就绪了。这个过程就叫作引导计算机。术语“引导”来自于“靠自己的努力振作起来”这一思想,这也正是计算机开机后它所做的事情。 计算机可以具备两个或更多个操作系统,用户在计算机开机时可以选择使用哪个操作系统。这种配置称为双引导或多引导系统。不过,任何时候都只有一个操作系统在控制计算机。 内存、进程与CPU管理   多程序设计(multiprogramming) :同时在贮存中驻留多个程序,由它们竞争CPU的技术。 内存(memory management) :了解主存中载有多少个程序以及它们的位置的动作。 进程(process) :程序执行过程中的动态表示法。 进程管理(process management)

2019-2020-1学期 20192413 《网络空间安全专业导论》第五周学习总结

南笙酒味 提交于 2019-12-03 15:26:41
第十章 操作系统 10.1操作系统的角色 操作系统负责管理硬件资源,允许应用软件直接的或通过其他系统软件访问系统资源。它提供了直接的人机交互界面。 一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。 操作系统的各种角色通常都围绕着一个中心思想“良好的共享” 10.1.1内存、进程与CPU管理 多道程序设计(multiprogramming):同时在主存中驻留多个程序,由它们竞争CPU的技术 内存管理(memory management):了解主存中载有多少个程序以及它们的位置的动作 所有现代操作系统都采用多道程序设计技术,因此,操作系统必须执行内存管理,以明确内存中有哪些程序以及它们驻留在内存的什么位置。 进程(process):程序执行过程中的动态表示法 进程管理(process management):了解活动进程的信息的动作 CPU调度(CPU scheduling):确定主存中的哪个进程可以访问CPU以便执行的动作 10.1.2批处理 程序和系统指令集合在一起称为作业 现代操作系统中的批处理概念允许用户把一组OS命令定义为一个批文件以控制一个大型程序或一组交互程序的处理。 10.1.3分时 分时(timesharing):多个交互用户同时共享CPU时间的系统 虚拟机(virtual machine):分时系统创建的每个用户都有专属机器的假象 主机

2019-2020-1学期 20192419 《网络空间安全专业导论》第五周学习总结 (读书笔记)

不打扰是莪最后的温柔 提交于 2019-12-03 11:50:53
第十章 操作系统 10.1 操作系统的角色 现代软件可以分为两类————应用软件和系统软件 应用软件: 帮助我们解决现实世界问题的程序。 系统软件:管理计算机系统并与硬件进行交互的程序。 操作系统:管理计算机资源并为系统交互提供界面的系统软件。 一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。计算机硬件是靠电线连接的,初始时载入永久性存储器中存储的一小组系统指令。 计算机可以具备两个或者多个操作系统,这种配置称为双引导或多引导系统。 操作系统负责管理资源,而这些资源通常是由使用它们的程序共享的。多个并发执行的程序将共享主存,依次使用CPU,竞争使用输入/输出设备的机会。 10.1.1 内存、进程与CPU管理 正在执行的程序都驻留在主存中,其中的指令以读取-解码-执行这种周期性方式被一个接一个地处理。 多道程序设计:同时在主存中驻留多个程序,由它们竞争CPU的技术。 内存管理:了解主存中载有多少个程序以及它们的位置的动作。 进程:程序执行过程中的动态表示法。 进程管理:了解活动进程的信息的动作。 CPU调度:确定主存中的哪个进程可以访问CPU以便执行的动作。 10.1.2 批处理 在交付程序时,用户需要为执行程序所需的系统软件或其他资源提供一套单独的指令。程序和系统指令集合在一起,称为 作业 。 现在术语“批”表示的是一个系统,在这个系统中

2019-2020-1学期 20192420 《网络空间安全专业导论》第五周读书笔记

三世轮回 提交于 2019-12-03 11:48:28
第10章 操作系统 10.1 操作系统的角色 现代软件(反映了不同的程序设计目的) :即 应用软件与系统软件 两类。 应用软件(application software) :帮助我们解决现实世界问题的程序。 系统软件(system software) :管理计算机系统并与硬件进行交互的程序。 操作系统(operating system) :管理计算机资源并与系统交互提供界面的系统软件。 一台计算机通常只有 一个 活动的操作系统,在系统运行中负责控制工作。 任何时候都只有 一个操作系统 在控制计算机。 双引导或多引导系统 :计算机可以具备 两个或者更多个 操作系统,用户在计算机开机时可以选择使用哪个操作系统。 10.1.1 内存、进程与CPU管理 多道程序设计(multiprogramming) :同时在主存中驻留多个程序,由它们竞争CPU的技术。 内存管理(memory management) :了解主存中载有多少个程序以及它们的位置的动作。 进程(process) :程序执行过程中的动态表示法。 进程管理(process management) :了解活动进程的信息的动作。 CPU调度(CPU scheduling) :确定主存中的哪个进程可以访问CPU以便执行的动作。 操作系统自身也是 必须执行的程序 ,所以在内存中也要和其他系统软件及应用程序一起 管理和维护 OS进程。

LInux进程与线程学习笔记

浪子不回头ぞ 提交于 2019-12-03 11:47:46
进程与线程 1、进程的相关概念 (1)、进程与程序: 1、进程是动态的,程序是静态的; 2、进程有生命周期,程序没有生命周期; 3、一个进程只能对应一个程序,一个程序却可以对应多个进程,没有建立进程的程序不能作为一个独立的单位获得操作系统的认可; (2)、进程控制块(PCB) 每个进程在内核中都有一个进程控制块来维护进程的相关信息,linux内核的进程控制块是task-struct结构体。内部成员很多,主要有: a、进程ID:系统中每个进程都有唯一的id,用pid_t类型表示。 b、进程状态:有初始、就绪、运行、挂起、终止五个状态。 c、进程切换需要保存和恢复的CPU寄存器。 d、描述虚拟地址空间的信息。 e、描述控制终端的信息。 f、当前工作目录。 g、文件描述符表:包含很多指向file结构体的指针。 h、和信号相关的信息。 i、用户组id和组id。 j、会话(session)和进程组。 k、umask掩码。 l、进程可以使用的资源上限。 2、进程控制 (1)、fork函数 pid_t fork(void) 问题: a、fork函数的返回值? 答:当fork函数创建子进程成功后,会返回两个,一个数为0:代表子进程的返回值;当返回值大于0时:父进程返回值,代表子进程的id。 b、子进程创建成功后,代码的执行位置? 答:父进程执行到哪,子进程就从哪里开始执行。 c、父子进程的执行顺序

操作系统 - 进程描述

佐手、 提交于 2019-12-03 11:34:46
  进程活动是通过在cpu上执行一系列程序和相对应数据进行操作来实现的,程序和进程操作的数据是进程存在的实体,但程序和数据都是静态的代码段和文本,不能反映进程的动态性。为此,需要一个数据结构来描述进程当前的状态和特性等,这种数据结构就称为进程控制块(pcb)(在linux称为task-struct,下文将会介绍)。 进程控制块pcb   pcb包含一个进程描述的信息、控制信息和资源信息,有些系统中还有进程调度等待所使用的现场保护区。进程并发执行时,由于资源需要共享,各进程之间相互制约,为了反应这些制约关系和资源共享关系,在创建一个进程时,应当创建其pcb,然后再根据pcb中的信息对进程实施有效的管理和控制。当一个进程完成其功能后,系统会释放该pcb,标志进程消亡。   pcb记录的进程控制信息按照功能大致可以分成四个部分:进程标识符、处理机状态、进程调度信息、进程控制信息。 1、进程标识符:   进程标识符用于唯一地标识一个进程,一个进程通常有以下两种标识符   (1)进程内部标识符。在所有的操作系统中,为每一个进程赋予一个唯一的数字标识符,通常是一个进程的序号。内部标识符主要是为了方便操作系统使用   (2)进程外部标识符。它有创建者提供,通常是由字母、数字组成。往往由用户在访问进程时候使用。为了描述其家族关系,还应设置父进程标识符和子进程标识符。 2、处理机状态: