操作系统之进程与线程1

进程与线程

  • 进程是资源分配的最小单位,线程是CPU调度的最小单位

  • 进程

    • 进程就是一个正在执行的程序的实例,是系统进行资源分配和调度的基本单位。在当代面向线程设计的计算机结构中,进程是线程的容器。

    • 进程的组成

    • 进程由进程控制块数据段正文段组成。

    • 进程控制块:程序计数器、进程状态、CPU暂存器(中断时用于存储寄存器的值)、虚拟物理内存对应关系表、文件描述符、存储器管理、优先级等调度用参数等。

    • 数据段:用户栈区、堆区、数据区等。

    • 正文段:正文段是可重入的程序,能被若干进程共享。为了管理可共享的正文段,UNIX设置了一张正文表,每个正文段都占用一个表目,用来指出该正文段在内存和磁盘上的位置、段的大小以及调用该段的进程数等情况。

    • 进程的创建

    • 进程的创建主要有两种方式:系统初始化、程序执行了创建进程的系统调用。

    • 在unix系统中,创建进程是使用系统调用fork(),创建出的进程与父进程拥有相同的内存映像、环境字符串、打开的文件。之后可以通过系统调用execve() 来更改内存映像以运行其他程序。

    • 父子进程拥有不同的地址空间,子进程创建时的内存映像是父进程的内存的副本,因此一个进程修改内存不会影响其他进程。(存在不可写的内存区域是父子进程共享一块的情况,以及内存可以通过写时复制cow来共享相同的内存只有修改时才复制到进程私有区域)

    • 进程的终止

    • 进程的终止主要有几种情况:正常退出,出错退出,被其他进程杀死。

    • 在unix中进程执行结束可以通过系统调用exit() 终止进程。

  • 线程

    • 一般来说现在的操作系统的实现都是一个进程中存在多个线程,多个线程共享这个进程的资源。
    • 一个标准的线程由线程ID当前指令指针PC寄存器堆栈组成。
  • 区别

    • 进程是资源分配的最小单位,线程是程序执行调度的最小单位。
    • 进程需要为其分配独立的地址空间,系统需要为进程维护各种段空间。
    • 线程通信方便,可以使用全局变量等数据。进程需要ipc来进行通信。
    • 进程切换成本较高,需要重新装入寄存器以及高速缓存等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值