计算机操作系统 --- 进程和进程的上下文切换

问题

  • 一个进程长什么样子的
  • 操作系统缺页中断后是如何将磁盘的数据加载到内存中的,过程是怎么样的

程序和进程

     程序是静态的概念,而process进程更像是运行任务,最后面一个例子可以好好理解,一个程序可以被多个进程加载。

进程的概念

进程与上下文切换

    可以看到两个进程(shell 和 hello 程序)发生切换的时候会从内核态到用户态。

    上面这张图非常重要,好好理解!     上面就是我们所说的上下文分两部分,和系统相关的进程信息为系统上下文,而和用户相关的则是用户级上下文, 例如我们的java 进程来说,java 对于操作系统来说是一个进程,一个进程有标识信息吧,进程的标识信息属于系统上下文,而我们写的代码则分配在用户程序块,我们使用代码生成的“对象”等分配在用户堆栈和用户数据块中。

    还是以java进程为例,假若操作系统中存在一个 java 进程,那么它的进程空间就可以这样表示。

用户态和内核态

    我们现在知道操作系统要不就处于两种状态,要不就执行用户代码,要不就执行内核代码。

处理器为了区分这两种模式,就有一个标识位用于区分两种状态。

进程的加载和运行

    上图是加载程序的步骤,其中step3,注意创建的进程是只能读不行写,通过只读来实现写时拷贝(相当于数据库数据从文件加载到内存,然后修改产生脏页,然后脏页再回刷数据回文件的原理,但是次处不是回刷到文件)写的时候发生了保护错了,这时候才真正执行替换的工作,将新进程的东西替换到旧进程的东西,step4 不会从磁盘拷贝代码和数据等内容,而是修改shell(旧进程)页表等东西,使得页表指向的是hello(新进程)页框,这时候就会产生缺页,缺页后就会加载数据到内存中,直到main函数。

execve函数执行

execve函数的执行可以任务是进程前的准备工作,execve的执行到main方法执行之前是需要重要把握的一部分的,会在操作系统后面的课程学习。

任务的栈结构

我们看右边的图,main函数的第二个参数是个数组放的是进程名,例如上面例子中的“Hello”

总结

  • fork 命令用于生成一个子进程 ,execute 则是指向进程前的准备,执行完后真正业务进程相关代码的是从 main函数入口。

参考资料

  • 袁春风老师的课程

原文地址:https://www.cnblogs.com/Benjious/p/12195508.html

时间: 2024-11-09 00:57:41

计算机操作系统 --- 进程和进程的上下文切换的相关文章

计算机操作系统学习笔记_2_进程管理 --进程与线程(上)

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { fon

计算机操作系统学习笔记_4_进程管理 --处理机调度

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; f

计算机操作系统学习笔记_5_进程管理 -- 同步与互斥

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { fon

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

为什么会有进程 进程是一个计算机工程概念,进程包含一个程序运行的所有资源.进程提供程序的抽象 一个独立的逻辑流 一个私有的地址空间 逻辑控制流 如果使用调试器调试一个程序,就能看到一些列的(PC),这些PC的序列就是逻辑控制流. 并发流 一个逻辑流的执行在时间上与另一个流重叠,成为并发流,多个流并发地执行的一般现象称为并发.简单理解为同时做多件事. 并行: 一般出现在多个CPU上. 多任务: 一个进程和其他进程轮流运行的概念. 时间片: 一个进程执行他的控制流的每一时间片段. 私有地址空间 进程

进程、线程和上下文切换

进程是什么? 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed). 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 进程的概念主要有两点:第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion).数据区域(data region

操作系统基础-下-进程控制及处理机调度

!:进程的控制和描述 *进程的定义:进程是一个具有独立功能的程序在一个数据集合上的一次动态运行过程(是操作系统进行调度和资源分配的基本单元,进程间的通信.同步及上下文切换的开销略大) *进程的特征(了解) 1.动态性:动态性是相对于程序本身来说的,程序仅仅是存放在硬盘上的代码,而进程是程序在某一特定数据集上的动态运行,所以,动态性是程序的最基本特性 2.并发性:并发性是指在一段时间内,操作系统内有多个进程并发执行 3.独立性:进程之间是相对独立的,每个进程都有可用的内存空间 4.异步性:即进程之

操作系统学习笔记 进程

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

《现代操作系统》笔记——进程和线程1

转载请注明: TheViper http://www.cnblogs.com/TheViper  进程 在任何多道程序设计系统中,cpu由一个进程快速切换至另一个进程,使的每个进程运行各运行几十或几百毫秒.严格的说,在某一瞬间,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.

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

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