进程控制块

进程控制(一)——进程创建

孤街醉人 提交于 2019-12-16 19:10:04
进程切换 进程切换(上下文切换) 暂停当前运行进程,从运行状态变成其他状态 调度另一个进程从就绪状态变成运行状态 进程切换的要求 切换前,保存进程上下文 切换后,恢复进程上下文 快速切换 进程生命周期的信息 寄存器(PC, SP, ...) CPU状态 内存地址空间 进程控制块PCB:内核的进程状态记录 内核为每个进程维护了对应的进程控制块(PCB) 内核将相同状态的进程PCB放置在同一队列 就绪队列 I/O等待队列 每个设备一个队列 僵尸队列 来源: https://www.cnblogs.com/douzujun/p/6571799.html

操作系统(一)

若如初见. 提交于 2019-12-11 05:54:41
title: 操作系统(一) date: 2019-12-09 20:03:43 categories: 操作系统 tags: 1. 操作系统的定义及主要目标 定义: 操作系统是配置在计算机硬件上的第一层软件 目标 方便性 易于使用 有效性 提高系统资源的利用率 提高系统的吞吐量 可扩充性 方便增加新功能与模块 开放性 兼容性好 2. 操作系统的基本类型及特征 单道批处理系统 一批作业,一个作业一个作业的处理 缺点:系统中资源得不到充分利用 多道批处理系统 一批作业,多个作业批处理 优缺点: 资源利用率高 系统吞吐量大 平均周转时间长 无交互能力 分时系统 一批作业,有个收作业的(内存)统一接收,及时分配,谁提交谁处理,及时处理 多终端多用户同时使用,能够及时接收命令与数据,及时处理作业 特点: 多路性 多用户 独立性 互不干扰 及时性 短时间响应 交互性 人机对话 实时系统 一批作业,提交后及时处理,实时处理,对处理时间有限制 类型 周期性任务和非周期性实时任务 硬实时任务和软实时任务 特点 多路性 独立性 及时性 交互性 可靠性 系统可靠度高,具有容错措施 3. 操作系统的功能及特征 功能 处理机管理功能 进程控制 创建和撤销进程 进程同步 为多个进程的运行进行协调。 进程互斥方式 诸进程对临界资源进行访问时,采用互斥方式 进程同步方式 在相互合作去完成共同任务的诸进程间

redis_05_redis的持久化机制RDB_AOF

北城余情 提交于 2019-12-08 19:29:54
持久化机制 1. Redis的持久化机制 1.1 RDB持久化 1.2 AOF 2. redis.conf 其他笔记资料 1. Redis的持久化机制 1.1 RDB持久化 指定时间间隔内将内存的 数据集快照 写入磁盘 如果已经存在这个数据库,下一次加载的时候就很快 设置相关的 redis.conf ( daemonize yes ; 快照压缩文件的目录 dir /var/redis ; 以及快照的频率) 启动redis-server,并打开其他的会话窗口,此时、/var/redis并没有快照文件 利用 ./bin/redis-benchmark -n 100000 利用测试进程, 在再另一会话窗口下的/var/redis下面发现 dump.rdb 快照文件 关闭服务端redis进程 kill -9 进程号 查看redis当前是否存在该进程 ps -ef | grep redis 是一种持久化的机制,就是服务器关闭后在启动,操作的内容是不会消失的。但是是一定时间间隔内才可能会快照记录,可能会导致某些数据的丢失 。 1.2 AOF 以 日志的形式记录 服务器所处理的每一个 写操作 ,在redis服务器启动之初会读取该文件来重新构建数据库。 更加保证了数据不会丢失。因为他的每一次操作都有记录。 rdb持久化模式可能会导致部分的数据丢失,rdb与aof可以一起同时存在

操作系统 Linux操作系统编程开发

♀尐吖头ヾ 提交于 2019-12-08 05:12:37
Linux操作系统编程开发 预备知识:   1、进程操作:Linux系统是 多任务的操作系统 ,采用 进程 作为 任务调度的单位, 进程在Linux系统下的概念是程序代码的一次执行,包括运行的代码和运行需要的数据、参数等资源。   2、进程和程序的区别:一方面:在Linux系统下,进程是程序代码的执行,所以程序是一段运行的,有生命力的程序,是一个动态的概念;一个程序是指储存在磁盘或者其他存储介质中的静态代码。另一方面:一个进程是基于一个程序运行的,而一个程序可以被重复载入到内存,形成多个进程!   3、 CPU时间片(Linux系统大约1ms) :时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。   4、Linux系统中进程在宏观上是并行,在微观上是串行的(一个CPU)。 在宏观上是并行 :同时可以打开多个进程;每个进程都有一个时间片和优先级。 在微观上是串行 :在每一个CPU时间片中,每个进程都有机会运行,优先级高的进程被运行的概率更大。如果时间片结束,进程还在运行,CPU将剥夺并分配给另一个进程;如果进程在时间片结束之前结束或者进入阻塞状态,CPU立即进行切换!一个CPU,一次只能执行程序的一部分。   5、mmu和多进程系统:   6、PID(进程号Process ID):在Linux系统中,每个进程都有一个 进程号

Linux操作系统 进程之间的通信

你。 提交于 2019-12-08 05:12:31
进程之间的通信 预备知识: 1、用户态和内核态,当一个进程在执行用户自己的代码时处于用户运行态(用户态);当一个进程因为系统调用陷入内核代码中执行时处于内核运行态(内核态)。 2、进程之间的通信(Inter Processs Communication- IPC )实现机制有:管道、消息队列、信号值、信号、共享内存、共享映射文件、套接字等。 3、及时通信:信号(类似中断);非及时通信:共享内存、邮箱、管道、套接字、 4、常见的信号:终止信号、定时器信号、用户自定义信号等 5、信号: 用户、系统或者进程 发送给 目标进程 的 信息 ,以通知目标进程某个 状态的改变 或 系统异常 。 6、 PCB(progress control block- 进程控制块),系统通过PCB,描述进程和控制进程。在Linux系统下,PCB是 task_struct结构体(进程描述符) 。   1、 进程状态 :记录进程是处于运行状态还是等待状态   2、 调度信息 :进程由哪个函数调度,具体怎样调度等   3、进程之间的 通讯状况   4、进程之间的 亲属关系 :在父进程和子进程之间有task_struct类型的指针,将父进程和子进程联系起来   5、 时间数据信息 :每个进程执行所占用CPU的时间   6、 进程的标志   7、 进程的标识符 :该进程唯一的标识符用来区别其他进程   8、

操作系统 Linux系统

我只是一个虾纸丫 提交于 2019-12-08 05:12:29
Linux操作系统 预备知识(Operating System): 1、GNU项目 ,GNU项目是一个自由软件项目,旨在建立一个 完全自由开放通用 的UNIX软件平台。 2、操作系统: 管理计算机硬件和软件资源的程序,而且操作系统需要处理如 管理与配置内存 、决定系统 资源 供需的 优先次序 、控制输入设备与输出设备、操作 网络 与 管理文件系统 等基本事务。操作系统也提供一个让用户与系统交互的 操作界面 。 3、操作系统基础知识 :一、四个特性: 并发 :同一段时间内多个程序执行(注意区别 并行和并发 ,前者是同一时刻的多个事件,后者是同一时间段内的多个事件);二、 共享 :系统中的资源可以被内存中 多个并发执行的进线程 共同使用;三、 虚拟 :通过 时分复用 (如分时系统)以及 空分复用 (如 虚拟内存 )技术实现把一个 物理实体虚拟为多个 ;四、 异步 :系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进。 4、进程和线层: 进层状态和多线层的状态(就绪状态,执行状态,阻塞状态);队列(就绪队列和阻塞队列); 5、进程和线层:   一、 进程 就是一个程序在一个数据集上的一次动态执行过程。 进程 一般由 程序、数据集、进程控制块 三部分组成。 程序 用来描述进程要完成哪些 功能 以及 如何 完成; 数据集 则是程序在执行过程中所需要使用的 资源 ; 进程控制块

Java并发编程系列-(1) 并发编程基础

萝らか妹 提交于 2019-12-06 15:21:47
1.并发编程基础 1.1 基本概念 CPU核心与线程数关系 Java中通过多线程的手段来实现并发,对于单处理器机器上来讲,宏观上的多线程并行执行是通过CPU的调度来实现的,微观上CPU在某个时刻只会运行一个线程。事实上,如果这些任务不存在阻塞,也就是程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而导致不能继续执行,由于在任务之间切换会产生开销,因此并行的效率可能没有顺序执行的效率高,并行也就没有意义。 一般来讲,CPU核心数和线程数的关系为核心数:线程数=1:1;但是如果使用了超线程技术,可以达到1:2甚至更多。 CPU调度方式 CPU采用时间片轮转机制,来调度不同的线程运行,又称RR调度,注意这样会导致上下文切换。如果线程数目过大,可能产生较大的线程切换开销。 线程和进程 进程 :进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。(包括程序段,相关数据段,和进程控制块PCB) 线程 :线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 关系:一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行

linuxC线程pthread的相关理解

て烟熏妆下的殇ゞ 提交于 2019-12-06 13:12:24
1. 线程概念  Linux里的线程,也叫轻量级进程(light weight process),本质上是进程。  Linux早期是没有线程的,后来的线程是借助进程实现的。线程、进程的核心都是调用系统的clone方法实现。  线程和进程的区别:(说明:PCB即进程控制块)    进程拥有PCB,用于独立的地址空间。是操作系统最小资源分配单位。(独居地址空间)    线程也有PCB,但没有独立的地址空间,共享同一个地址空间。是操作系统最小执行单位。(合租地址空间)    Linux内核线程实现原理:    1)轻量级进程,也有PCB,创建线程使用的底层方法和进程一样都是clone方法。    2)线程有各自的PCB,但是各自的PCB指向内存资源的三级页表是相同的。所以地址空间是相同的,即共享地址空间。    3)线程可看作是寄存器和栈的集合。  三级页表映射:进程PCB -> 页目录(可看作数组,首地址位于PCB里)-> 页表(可看作数组元素) -> 物理页表 -> 内存单元  线程共享的资源:    文件描述符、信号处理方式、当前工作目录、用户ID和组ID、内存地址空间(.text/.data/.bss/heap/so)  线程非共享的资源:    线程ID、处理器现场和内核栈指针、用户空间栈、errno变量、信号屏蔽字、线程调度优先级、线程调度策略 2. pthread线程函数 

多进程笔记

倾然丶 夕夏残阳落幕 提交于 2019-12-06 05:05:48
昨日课程回顾:   编程语言的发展:     机器语言:  二进制     汇编语言:  指令     高级语言:  面向过程(C)  面向对象(Python)   操作系统的目标:     为用户更方便的使用   并行:指两件或多间事情,在同一时间点同时执行   并发:指两件或多见事情,在同一时间间隔内同时执行   计算机组成:     CPU,主板,储存,输入,输出   进程由三部分组成:     代码段,数据段,PCB(进程控制块)      进程的特征:     动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。     并发性:任何进程都可以同其他进程一起并发执行     独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;     异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进     多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结 果;但是执行过程中,程序不能发生改变。     进程的三个基本状态:     就绪状态:获得了除CPU之外运行的所有资源     执行状态:获得了所有资源,处于正在执行的状态     阻塞状态:因为各种原因,导致进程放弃了CPU,导致进程无法继续执行,此时进程处于内存中   dos系统: 

文件描述符fd,struct files_struct

安稳与你 提交于 2019-12-06 04:16:37
程序可以理解为硬盘上的普通二进制文件;进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件 描述信息的结构体 ,描述该进程的结构体叫 PCB(进程控制块) ,在这就不在讨论。对于程序与进程,也就可以简单地理解为是否有PCB(进程控制块)。下面我们再来讨论PCB与file_struct的关系。 在每一个PCB中,都有一个文件描述符表,通过文件描述符索引指向file_struct(系统打开文件表) 。 文件描述符在形式上是一个非负整数,实际上, 它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表 ,当程序打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。也就是说,一个程序能够访问文件是因为给这个程序分配了文件描述符。 下面我们来讨论file_struct里面具体有哪些内容, file结构体定义在linux系统中的(/kernels/include/linus/fs.h)文件中。 file_struct结构如下 struct file {   union {   struct list_head fu_list; //文件对象链表指针linux/include/linux/list.h   struct rcu_head fu_rcuhead; //RCU(Read-Copy Update)是Linux 2