进程管理

操作系统--进程管理(一)

北城以北 提交于 2020-01-30 05:13:16
进程 前言 系统由一组进程组成: 操作系统进程执行系统代码 ,而用户进程执行用户代码。 通过(多个)CPU在进城之间的切换(多路复用),所有这些进程都有可能并发执行, 从而操作系统能使计算机更为高效。 4.1 进程概念 进程 和 作业 这两个概念在本博文中是相同的。 4.1.1 进程 进程是执行中的程序, 这是一种 非正式的说法。 进程不只是程序代码。 进程包括 当前活动, 通过 程序计数器 的值和 处理器 寄存器 的内容来表示。 另外, 进程通常还包括 进程 堆栈段 (包括临时数据, 如方法参数、返回地址和 局部变量)和 数据段 (包括全局变量)。 程序本身只是 被动实体, 而进程是 活动实体, 它有一个程序计数器 用来表示下一个要执行的 指令和相关 资源集合。 虽然 两个进程可以与 同一程序 相关, 但是它们 被当做两个 独立的执行序列。 例如, 多个用户可运行电子邮件程序的 拷贝, 或者同一用户能调用编辑器程序的多个拷贝。 这些都是独立的进程, 虽然文本段相同, 但是数据段不同。 通常 一个进程在运行时也会产生许多进程。 4.1.2 进程状态 进程执行时会改变状态。进程状态 部分地由进程的当前活动所定义。每个进程可能处于下列状态之一: 新的 : 进程正在被创建。 运行 : 指令正在被执行。 等待 : 进程等待一定事件的出现。 就绪 : 进程等待被分配给某个处理器。 终止

操作系统-进程管理

我怕爱的太早我们不能终老 提交于 2020-01-28 02:11:18
进程管理 要点: 基础:进程描述及控制 策略:进程调度 实现:互斥与同步 避免:死锁与饥饿 解决:几个经典问题 进程的引入 程序的顺序执行 源代码程序,目标程序和可执行程序 程序执行:编辑,编译,链接,执行 程序的结构:顺序,分支,循环结构 程序执行的特征:顺序性,封闭性,可再现性 程序并发执行 多道程序设计技术:多个程序并发执行 程序并发执行时的特征:间断性,非封闭性,不可再现性 并发执行引发的问题: 协调各程序的执行顺序:输入数据还未全部输入内存时,计算必须等待 多个执行程序共享系统资源,程序之间可能会相互影响,甚至影响输出结果 选择那些,多少个程序进入内存执行 内存中的执行程序谁先执行,谁后执行 内存如何有效分配? 进程的概念 定义:可并发执行的程序,在一个数据集合上的运行过程 申请、拥有资源~调度(线程) 程序:静态概念,是指令和数据的集合,可长期存储 进程与程序对应关系 一个程序可以对应一个进程或者多个进程 一个进程可以对应一个程序,或者一段程序 进程的特征 动态性 并发性 独立性 异步性 引入进程带来的问题 增加了空间开销:为进程建立数据结构 额外的时间开销:管理和协调,跟踪,填写和更新有关数据结构,切换进程,保护现场 更难控制:协调多个进程竞争和共享资源如何预防;解决多个集成因为竞争资源而出现的故障 处理机的竞争尤为突出 进程的结构 组成(进程映像):程序,数据集合

linux进程管理之进程查看

旧时模样 提交于 2020-01-21 07:26:36
查看进程 process ==================================================================================== 了解如进程的: • PID,PPID • 当前的进程状态 • 内存的分配情况 • CPU和已花费的实际时间 • 用户UID,它决定进程的特权 w 查看当前系统信息 [root@bogon cron]# w 14:48:39 up 2:46, 1 user, load average: 0.00, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 192.168.203.1 12:27 0.00s 0.17s 0.02s w w显示信息的含义: JCPU: 以终端代号来区分,该终端所有相关的进程的进程执行时,所消耗的 CPU时间会显示在这里 PCPU : cpu 执行程序消耗的时间 WHAT: 用户下在执行的操作 load average : 分别显示系统在过去 1、 5、 15分钟内的平均负载程度。 FROM : 显示用户从何处登录系统,“: 0”的显示代表该用户时人 X Windows 下,打开文本模式窗口登 录的 IDLE: 用户闲置的时间,这是一个计时器,一旦用户执行任何操作,该计时器便会被重置

深入Linux内核架构-进程管理和调度(四)

假如想象 提交于 2020-01-20 21:20:19
一、进程管理相关的系统调用 讨论 fork 和 exec 函数族( 用来用指定的程序替换当前进程的所有内容 )系统调用的实现。通常这些调用不是由应用程序直接发出 的,而是通过一个中间层调用,即负责与内核通信的C标准库。 从用户状态切换到核心态的方法,依不同的体系结构而各有不同。用于在这两种状态之间切换的机制,并解释了用户空间和内核空间之间如何交换参数。就目前而言,将内核视为由C标准库使用的“ 程序库 ”即可。 1、进程复制 传统UNIX中用于复制进程的系统调用是fork。但fork并不是Linux为此实现的唯一调用,实际上Linux实现了3个。 (1) fork 是重量级调用,因为fork建立了父进程的一个完整副本,然后作为子进程执行。为减少与该调用相关的工作量,Linux使用写时复制( copy-on-write )技术。 (2) vfork 类似于 fork ,但vfork 并不创建父进程数据的副本。相反,父子进程之间共享数据。这节省了大量CPU时间(如果一个进程操纵共享数据,则另一个会自动注意到)。 vfork 设计用于子进程形成后立即执行 exec 系统调用加载新程序的情形。在子进程退出或开始新程序之前,内核保证父进程处于堵塞状态。由于 fork 使用了写时复制技术, vfork 在速度方面不再有优势,因此应该避免使用 vfork 。 (3) clone 来源: CSDN

进程管理(一)

◇◆丶佛笑我妖孽 提交于 2020-01-20 17:14:49
进程管理 一、进程 1. 进程概念 进程是一个具有一定独立功能的程序,在一个数据集上的一次动态执行的过程。进程是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程一般由程序,数据和进程控制块三部分组成。 程序用于描述进程要完成的功能,是控制进程执行的指令集; 数据是程序在执行时所需要的数据和工作区; 程序控制块包含进程的描述信息和控制信息是进程存在的唯一标志。 二、进程查看 1. ps与pstree ps命令用来查看当前进程的快照信息 用法:ps [ 选项 ] -u  以用户为中心组织进程状态信息显示 -a  与终端相关的进程 -x  与终端无关的进程 -e  显示所有进程 -f   显示完整格式程序信息 ps -aux 输出格式说明 字段 描述 USER 用户名 %CPU 进程占用的CPU百分比 %MEM 占用内存的百分比 VSZ 该进程使用的虚拟內存量(KB) RSS 该进程占用的固定內存量(KB)(驻留中页的数量) STAT 进程的状态 START 该进程被触发启动时间 TIME 该进程实际使用CPU运行的时间 状态码说明 状态码 描述 D 无法中断的休眠状态(通常 IO 的进程); R 正在运行可中在队列中可过行的; S 处于休眠状态; T 停止或被追踪; W 进入内存交换 (从内核2.6开始无效); X 死掉的进程 (基本很少见); Z 僵尸进程; <

Python—守护进程管理工具(Supervisor)

ε祈祈猫儿з 提交于 2020-01-20 16:40:22
一、安装supervisor 1、安装supervisor [root@localhost ~]# pip install supervisor 2、测试supervisor安装是否成功 [root@localhost ~]# echo_supervisord_conf 3、卸载supervisor [root@localhost ~]# pip uninstall supervisor 来源: CSDN 作者: bieieyang 链接: https://blog.csdn.net/x8010457jiaozh/article/details/104049959

Supervisor进程管理&开机自启

拜拜、爱过 提交于 2020-01-20 01:22:54
这几天在用supervisor管理爬虫和Flask, 每次都记不住命令,花点时间记录下。 supervisor 是一个进程管理工具,用来启动、停止、重启和监测进程。我用这个东西主要用来监测爬虫和Flask运行状况,当程序挂掉后,supervisor能够帮我重新拉起进程。 安装 安装就比较简单了,直接用Python的包管理器pip: sudo pip install supervisor 配置 先通过echo_supervisord_conf 命令生成配置文件,路径随你指定。 echo_supervisord_conf > /etc/supervisord.conf 查看配置文件,常用配置说明: ;supervisord.conf [unix_http_server] file=/tmp/supervisor.sock ; UNIX socket 文件,supervisorctl 会使用 ;chmod=0700 ; socket 文件的 mode,默认是 0700 ;chown=nobody:nogroup ; socket 文件的 owner,格式: uid:gid ;[inet_http_server] ; HTTP 服务器,提供 web 管理界面 ;port=127.0.0.1:9001 ; Web 管理后台运行的 IP 和端口,如果开放到公网,需要注意安全性

linux进程管理(进程信号)

僤鯓⒐⒋嵵緔 提交于 2020-01-19 23:47:14
.进程信号 信号:进程和内核沟通所需要的语言 可控信号类型 man 7 signal 可控信号 含义 1 刷新 (让进程再次读取配置) 2 中断键盘输入 3 退出键盘 9 强制结束 (拔电) 15 正常关闭(正常关机) 18 激活进程 19 强制暂停 20 正常暂停 信号指令 Kill 信号 pid 只能结束单一进程 pkill 信号 进程名称 Killall -9 gedit 结束所有指定 来源: 51CTO 作者: wx5e0444acbb5dc 链接: https://blog.51cto.com/14653135/2467860

linux系统之进程管理

做~自己de王妃 提交于 2020-01-19 21:48:41
前言 我们拥有操作系统就是为了运行用户程序,程序的运行需要调动进程,因此进程管理就是所有操作系统的心脏。 实际上,进程就是正在执行的程序代码的时事结果。 进程的理解 进程: 进程是静态的文件,是运行中的程序的一个副本,且存在生命周期。 进程状态: 状态 定义 R(TASK_RUNNING) 可执行状态(RUNNING,READY) S(TASK_INTERRUPTIBLE) 可唤醒睡眠状态 D(TASK_UNINTERRUPTIBLE) 不可唤醒睡眠状态 T(TASK_STOPPED) 暂停状态 Z(EXIT_ZOMBIE) 僵死态 正在运行与 就绪态 的区别在于是否正在占用cpu的时间片 就绪态与 可唤醒状态 的区别在于是否在cpu运行的队列中 可唤醒与 不可唤醒 的区别在于是否拥有程序运行所需要的系统资源。 ctrl+z可使进程进入后台的 暂停状态 ,一般暂停状态是人为操作的。 僵死态 指这个进程无父进程给回收其系统资源,会造成系统资源浪费。 进程查看 进程树pstree [root@workstation Desktop]# pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─accounts-daemon───2*[{accounts

Docker在进程管理

荒凉一梦 提交于 2020-01-17 19:14:08
摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患。另外Docker鼓励“一个容器一个进程(one process per container)”的方式。这种方式非常适合以单进程为主的微服务架构的应用。然而由于一些传统的应用是由若干紧耦合的多个进程构成的,这些进程难以 Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患。另外Docker鼓励“一个容器一个进程(one process per container)”的方式。这种方式非常适合以单进程为主的微服务架构的应用。然而由于一些传统的应用是由若干紧耦合的多个进程构成的,这些进程难以拆分到不同的容器中,所以在单个容器内运行多个进程便成了一种折衷方案;此外在一些场景中,用户期望利用Docker容器来作为轻量级的虚拟化方案,动态的安装配置应用,这也需要在容器中运行多个进程。而在Docker容器中的正确运行多进程应用将给开发者带来更多的挑战。 今天我们会分析Docker中进程管理的一些细节,并介绍一些常见问题的解决方法和注意事项。 容器的PID namespace(名空间) 在Docker中,进程管理的基础就是Linux内核中的PID名空间技术。在不同PID名空间中,进程ID是独立的;即在两个不同名空间下的进程可以有相同的PID。