进程的概念

简介: 进程的概念

进程的概念

程序的概念

这里说的是一个可执行文件,passive的意思可以理解为我们这个执行文件需要我们进行双击才会被被执行。

双击后,程序入口地址读入寄存器,程序加载入主存,成为一个进程

进程是主动去获取想要的资源,注意这里每个进程都只有一个pc

这里我去问了一下老师,老师说微观上来说确实一个核心一个pc只能同时运行一个进程,因为学习过计组之后我们知道单核只有一个pc寄存器,分时任务可以设置中断程序然后让pc数据存入对应堆栈空间,然后执行完相应程序再读取回来,通过cpu流水线进行优化,这样一套流程让我们感觉到多进程是在同时运行的。

程序推入内存示意图

执行流程:

1.先将代码解释成二进制指令,该指令区域(text)是只读的,压入无法修改;

2.入口main函数加载入栈空间,压入静态变量i和调用另外一个g函数,同时压入全局变量global;

3.g函数压入栈,a局部变量压入栈,再压入f函数;

4.压栈入f函数,x,y,p局部变量进栈,动态申请堆空间100Byte(p指针局部变量值为此堆空间的地址) ,继续向下读

5.返回到f函数f函数再代码中存在的地址区,继续向下读;

6.读到g函数return,返回g函数代码点,返回0值进栈,释放栈、堆空间,释放text空间;

遗留问题

c语言需要手动释放垃圾内存

并发的进程:

当然这里我们要知道这个"并发"并非并行,前面讨论pc的时候有讲。

当然如果是多核cpu是可以并行的。

并发进程共享cpu

就算是并行也会被并发所影响

最后给进程下个定义

进程的状态:

最后一个等待态是不具备运行条件,下面这个例子是,如果指定到2步输出语句需要调用系统write占用io,如果这个函数执行占用资源很大,那调用2步函数的进程需要进入等待状态让出cpu控制权,等待调用结束。

运行状态何时能让出cpu控制权?

调用i/o设备进入等待,非正常结束进入终止。

windows叫做抢占式的多任务操作系统,如果有更高优先级的进程到达就绪状态,那么立刻就会抢占低优先级进程的cpu使用权;分时操作系统为所有的并发进程分发时间片,假设分时系统为每个进程运行时间平均分配100s,那么进程占用cpu达到100s就会被强制剥夺cpu使用权。

进程转化

总结:

外中断:外部事件

内中断:经典例子地址越界,除数为0,c语言堆栈溢出。

中断处理程序保存前面 我们画的那个程序内存空间的数据

中断程序执行一个lpsw指令跳回用户模式

上下文内容(context)

操作系统管理context,只需要调用每个进程的context内的PCB

相关文章
|
11月前
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
8月前
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
153 20
|
7月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
140 0
|
7月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
192 0
|
Go 调度 开发者
[go 面试] 深入理解进程、线程和协程的概念及区别
[go 面试] 深入理解进程、线程和协程的概念及区别
|
10月前
|
存储 Linux 调度
【Linux】进程概念和进程状态
本文详细介绍了Linux系统中进程的核心概念与管理机制。从进程的定义出发,阐述了其作为操作系统资源管理的基本单位的重要性,并深入解析了task_struct结构体的内容及其在进程管理中的作用。同时,文章讲解了进程的基本操作(如获取PID、查看进程信息等)、父进程与子进程的关系(重点分析fork函数)、以及进程的三种主要状态(运行、阻塞、挂起)。此外,还探讨了Linux特有的进程状态表示和孤儿进程的处理方式。通过学习这些内容,读者可以更好地理解Linux进程的运行原理并优化系统性能。
378 4
|
分布式计算 JavaScript 前端开发
多线程、多进程、协程的概念、区别与联系
多线程、多进程、协程的概念、区别与联系
423 1
|
10月前
|
存储 算法 数据处理
进程基础:概念、状态与生命周期
进程是操作系统进行资源分配和调度的基本单位,由程序段、数据段和进程控制块(PCB)组成。线程是进程中更小的执行单元,能独立运行且共享进程资源,具有轻量级和并发性特点。进程状态包括就绪、运行和阻塞,其生命周期分为创建、就绪、运行、阻塞和终止阶段。
601 2
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
481 4
|
存储 Linux Shell
Linux进程概念(上)
冯·诺依曼体系结构概述,包括存储程序概念,程序控制及五大组件(运算器、控制器、存储器、输入设备、输出设备)。程序和数据混合存储,通过内存执行指令。现代计算机以此为基础,但面临速度瓶颈问题,如缓存层次结构解决内存访问速度问题。操作系统作为核心管理软件,负责资源分配,包括进程、内存、文件和驱动管理。进程是程序执行实例,拥有进程控制块(PCB),如Linux中的task_struct。创建和管理进程涉及系统调用,如fork()用于创建新进程。
362 3
Linux进程概念(上)

热门文章

最新文章