操作系统系列(二)——进程

往期地址:

  • 操作系统系列一 —— 操作系统概述

本期主题:
操作系统进程


文章目录

  • 1.异常
    • 1.前言——异常控制流是什么?
    • 2.异常的处理过程
    • 3.异常的分类
    • 4.异常和进程的关系
  • 2.进程
    • 1.进程的概念
    • 2.进程所做的事情(意义)
      • 1.逻辑控制流
      • 2.私有地址空间
    • 3.linux中的进程怎么管理
      • 1.常用的linux指令
      • 2.linux下的API

1.异常

1.前言——异常控制流是什么?

从处理器上电开始,开始运行指令,指令的运行序列被称为处理器的控制流(flow of control),现代操作系统通过使控制流发生突变来面对一些异常的情况,这些就被称为异常控制流(Exceptional Control Flow,ECF)

2.异常的处理过程

异常是我们前面提到的异常控制流中的一种,它的处理过程是:
当处理器检测到有事情发生时,就会通过异常表,跳到一个专门用来设计处理这些异常的程序中,称为异常处理程序(exception handler)

3.异常的分类

异常可以做如下分类:

类别 原因 异步/同步 返回行为
中断 来自设备的I/O信号 异步 返回到下一条指令继续执行
陷阱(也不知道为啥叫这么奇怪的名字) 系统调用,有意的异常 同步 返回到下一条指令继续执行
故障 潜在的可恢复的错误 同步 可能返回到当前指令重新执行,也可能直接终止
终止 不可恢复的错误 同步 不会返回,直接终止

4.异常和进程的关系

正是有了异常这种可以打断处理器的操作,才有了进程的诞生。因为进程有两个关键意义

  • 一个独立的逻辑控制流,看起来能够让程序独占处理器;
  • 一个私有的地址空间,看起来让程序独占使用内存系统;

2.进程

1.进程的概念

一个执行中程序的实例就是进程。

2.进程所做的事情(意义)

前面已经说到,进程有两个关键意义:独立和逻辑控制流和私有的地址空间,那它是怎么做到这些事情的呢?

1.逻辑控制流

即使在系统中运行了许多程序,进程会向每个进程提供一个假象,就是它正在独占使用处理器,以一个运行着三个进程的系统为例:
在这个例子中,三个逻辑流的执行是交错的,先运行了一会进程A,然后运行进程B到完成,然后运行了一会C,然后A进程又开始运行了…
关键点在于他们是轮流使用处理器的,没在运行的时候进程就被暂时的挂起。
操作系统系列(二)——进程_第1张图片

2.私有地址空间

系统中的每个进程都有自己的私有地址空间,排布如下:
操作系统系列(二)——进程_第2张图片

以32位操作系统为例,从0xc000000000到0xFFFFFFFF共1G的大小是内核地址空间(后面再探讨内核地址空间,先重点关注用户地址空间),余下的低地址3G空间则是用户地址空间。
各个段的部分的介绍:

  • Code VMA: 即程序的代码段,CPU执行的机器指令部分。通常,这一段是可以共享的,即多线程共享进程的代码段。并且,此段是只读的,不能修改。
  • Data VMA: 即程序的数据段,包含ELF文件在中的data段和bss段。
  • 堆和栈: 这两个大家都十分熟悉了,new或者malloc分配的空间在堆上,需要程序猿维护,若没有主动释放堆上的空间,进程运行结束后会被释放。栈上的是函数栈临时的变量,还有程序的局部变量,自动释放。
  • 共享库和mmap内容映射区:位于栈和堆之间,例如程序使用的printf,函数共享库printf.o固定在某个物理内存位置上,让许多进程映射共享。mmap是一个系统函数,可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址。
  • 命令行参数: 程序的命令行参数
  • 环境变量:类似于Linux下的PATH,HOME等环境变量,子进程会继承父进程的环境变量。

3.linux中的进程怎么管理

1.常用的linux指令

ps指令查询进程的状态

gary@ubuntu:~/workspaces/blog/thread$ man ps

PS(1)                                                                           User Commands                                                                          PS(1)

NAME
       ps - report a snapshot of the current processes.

SYNOPSIS
       ps [options]

DESCRIPTION
       ps displays information about a selection of the active processes.  If you want a repetitive update of the selection and the displayed information, use top(1)
       instead.

2.linux下的API

你可能感兴趣的:(计算机操作系统,linux,操作系统,多进程)