操作系统学习之进程和线程

为什么会有进程

进程是一个计算机工程概念,进程包含一个程序运行的所有资源。
进程提供程序的抽象

  • 一个独立的逻辑流
  • 一个私有的地址空间

    逻辑控制流

    如果使用调试器调试一个程序,就能看到一些列的(PC),这些PC的序列就是逻辑控制流。

    并发流

    一个逻辑流的执行在时间上与另一个流重叠,成为并发流,多个流并发地执行的一般现象称为并发。简单理解为同时做多件事。

并行: 一般出现在多个CPU上。

多任务: 一个进程和其他进程轮流运行的概念。

时间片: 一个进程执行他的控制流的每一时间片段。

私有地址空间

进程为每个程序提供一个假象,它好在独立的使用系统的地址空间。

思考

docker虚拟化技术,基于进程的隔离。

进程模型

为什么会存在进程模型?
一个进程就是一个正在运行的程序,进程需要有自己的程序计数器(PC),内存空间以及CPU,真实的情况是在计算机中存在有多个进程,然后多个进程在同一时间只有一个使用CPU,所以需要来回切换,于是需要使用进程模型来管理。

用户模式和内核模式

处理器通常是用某个控制寄存器的一个模式位(mode bit)来提供。进入内核模式
中断、系统错误、系统调用。

上下文切换

创建进程、控制

123456789101112 大专栏  操作系统学习之进程和线程13141516
#include "stdio.h"#include <unistd.h>

int main() {    pid_t pid;    int x = 1;

    pid = fork();    if (pid == 0) {        // child        printf("child: x=%dn", ++x);        exit(0);    }    printf("parrent: x=%dn", --x);    exit(0);}

为什么返回0的是子进程,而在父进程中返回子进程的进程id?
在这里fork函数返回了2个值。0和子进程的id,一个父进程有多个子进程,但是一个父进程有多个子进程,如果在子进程中,直接通过getParrentPid这种函数直击就能获取子进程的id了。

  • 系统初始化
  • 进程创建的系统调用
  • 用户创建了一个进程
  • 批处理作业

进程退出

  • 正常退出(自愿)
  • 出错退出(自愿)
    区别于下面的严重错误,这里面的错误是程序逻辑上抛出的错误,也就是说按照默认的规定返回的不是0
  • 严重错误(非自愿)
    这里可以理解成我们常说的异常,eg:空指针,除数为0
  • 被其他进程杀死(非自愿)

进程的层次结构

Posix系统中,有子进程和父进程的概念,Posix

进程的状态

  • 运行态
  • 就绪态(和1类似,但是暂时没有CPU分配)
  • 阻塞态

进程模型的实现

进程表,由操作系统维护,有的叫做进程控制块。

理解单CPU如何维护多个进程的错觉?
每一个IO关联着一个中断向量的位置,靠近内存底部的固定位置。所有的中断都是从保存寄存器开始,这些会动进程的进程表中获取,然后保存起来。堆栈中删除由寄存器保存起来的信息,然后将堆栈指针跳转到中断向量中的地址,

ps、kill、killall以及proc目录

原文地址:https://www.cnblogs.com/liuzhongrong/p/12272056.html

时间: 2024-10-12 20:33:22

操作系统学习之进程和线程的相关文章

操作系统学习笔记----进程/线程模型----Coursera课程笔记

操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进程创建.撤销.阻塞.唤醒.... 0.2 线程模型 为什么引入线程 线程的组成 线程机制的实现 用户级线程.核心级线程.混合方式 1. 进程的基本概念 1.1 多道程序设计 允许多个程序同时进入内存运行,目的是为了提高CPU系统效率 1.2 并发环境与并发程序 并发环境: 一段时间间隔内,单处理器上

linux学习之进程,线程和程序

                                                                                  程序.进程和线程的概念 1:程序和进程的差别 进程的出现最初是在UNIX下,用于表示多用户,多任务的操作系统环境下,应用程序在内存环境中基本执行单元的概念.进程是UNIX操作系统环境最基本的概念.是系统资源分配的最小单位.UNIX操作系统下的用户管理和资源分配等工作几乎都是操作系统通过对应用程序进程的控制实现的! 当使用c c++ j

操作系统中的进程与线程

操作系统中的进程与线程 转自:http://www.cnblogs.com/CareySon/archive/2012/05/04/ProcessAndThread.html 简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程.但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行.因此线程被引入操作系统. 为什么需要线程? 如果非要说是为什么需要线程,还不如说为什么需要进程中还有其它进程.这些进程中包含的其它迷你进程就是线程. 线程之所以说是迷你进程,是因为

操作系统中的进程和线程

进程与进程的作用 当我们双击程序图标,开始运行程序时,就产生了一个进程.所以进程的本质是一个正在执行的程序.进程包含了程序运行的所需要的所有信息,如代码段,数据段,程序计数器(存放下一条指令所在的地址),进程标识符(PID)进程控制块(PCB,用来保存进程退出CPU时的现场信息)等等信息. 所以进程可以看做是容纳程序运行的所有信息的容器. 值得注意的是,一个程序如果运行了两遍,则算是两个进程.如运行了两个word程序,这两个进程除了代码段,其他信息都是不一样的,事实上,这两个进程共享代码段. 进

python学习之-- 进程 和 线程

python 进程/线程详解 进程定义:以一个整体的形式暴露给操作系统管理,它里面包含对各种资源的调用,内存的管理,网络接口的调用等等,对各种资源管理的集合,就可以叫做一个进程. 线程定义:线程是操作系统能够进行运算调度的最小单位(是一串指令的集合).它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 另说明:进程是不能直接操作CPU执行的,每个进程的执行都是默认创建一个主线程来操作CPU进行执行指令集合

操作系统笔记之进程与线程

背景 操作系统设计的7个主题:1. 进程描述和控制2. 内存管理3. 调度4. I/O和文件管理5. 并发和分布式系统6. 嵌入式系统7. 安全 操作系统利用一个或多个处理器的硬件资源,为系统用户提供一组服务,还代表用户来管理辅助存储器和I/O设备. CPU中断的分类:1. 程序中断2. 时钟中断3. I/O中断4. 硬件失效中断 DMA:直接内存存取 概述 典型计算机系统的三个重要接口:1. 指令系统体系结构ISA2. 应用程序二进制接口ABI3. 应用程序编程接口API 进程 三个部分:1.

操作系统:Linux进程与线程

这里是一部分内容,还会做修改. 一:目的及内容 学习fork(),exec,pthread库函数的使用,阅读源码,分析fork,exec,pthread_create函数的机理 代码实现: 进程A创建子进程B 子进程B与父进程A分别对应不同的可执行体:A打印Hello world,B实现sum累加 进程B具有三线程,主线程创建新的线程1实现sum累加(从1到参数x),线程2监控输入参数x 若输入x是非负整数,线程1开始计算:如果线程1正在计算前次程序,线程2的输入非负整数和最近一次的又不同,线程

操作系统学习笔记 进程

进程的定义 1. 一个正在执行中的程序: 2. 一个正在计算机上执行的程序实例: 3. 能够分配给处理器并由处理器执行的实体: 4. 一个具有以下特征的活动单元:一组指令序列的执行,一个当前状态和相关系统资源的集合: 由一组元素(包括两个基本元素:程序代码和代码相关的数据集)组成的实体,如果处理器开始执行该代码,这个执行实体就称为进程.在进程执行的任意一个时刻,都可以唯一的被表示为以下元素: 标识符:和进程相关的唯一标示,用以区分不同的进程: 状态:执行态,阻塞态,就绪态等: 优先级:相对于其他

操作系统原理之进程和线程学习

进程 操作系统必须交替执行多个进程,在合理的响应时间范围内使处理器的利用率达到最大. 操作系统按照程序分配的优先级给进程分配资源,避免死锁. 操作系统支持进程间的通信和用户创建进程 定义:正在计算机上执行的程序实例,能分配给处理器并由处理器执行的实体(程序代码+代码相关数据集) 进程控制块:标识符(进程唯一标识符).状态.优先级.程序计数器(程序即将被执行的下一条指令地址).内存指针(程序和相关数据的指针.和其他进程共享内存块的指针).上下文数据(寄存器中的数据).I/O状态信息(显式的I/O请