进程与线程

摘要:

本文详细分析了进程与线程的关系,只出进程是资源分配的基本单位,线程是CPU进行调度和分派的基本单位。

1. 程序

程序就是存放在存储设备上的各种可执行的文件。

2. 进程

2.1定义:
程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,
(1)进程是一个可拥有资源的独立单位;
(2)进程同时又是一个可独立调度和分派的基本单位。
2.2组成:
进程 = PCB(Process Control Block) + 程序段 + 数据段。在很多情况下,我们所说的进程就是指PCB。比如说创建进程都是指创建PCB。

2.3 PCB
2.3.1进程标识符
(1) 内部标识符
在所有的操作系统中,都为每一个进程赋予了一个惟一的数字标识符,它通常是一个进程的序号。设置内部标识符主要是为了方便系统使用。
(2) 外部标识符
它由创建者提供,通常是由字母、数字组成,往往是由用户(进程)在访问该进程时使用。为了描述进程的家族关系,还应设置父进程标及子进程标识。此外,还可设置用户标识,以指示拥有该进程的用户。

2.3.2处理器状态
处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,所有这些信息都必须保存在PCB中,以便在该进程重新执行时,能从断点继续执行。
这些寄存器包括:
①  通用寄存器:它们是用户程序可以访问的,用于暂存信息;
②  指令计数器:存放了要访问的下一条指令的地址;
③  程序状态字PSW:含有状态信息,如条件码、执行方式、中断屏蔽标志等;
④  用户栈指针,指每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址,栈指针指向该栈的栈顶。

2.3.3进程调度信息
(1)进程状态
(2)进程优先级
(3)事件(引起进程阻塞原因)
(4)其它(如:调度算法)

2.3.4进程控制信息
(1)程序和数据地址
(2)进程同步和通讯的机制:信号量,消息队列指针等
(3)资源清单
(4)链接指针

2.3.5 Linux 进程结构--task_struct
struct task_struct
{
        volatile long state;// state 变量是一些表明任务状态的比特位
        void *stack;
        unsigned int flags;// flags 定义了很多指示符,表明进程是否正在被(PF_STARTING)//或退出(PF_EXITING),或是进程当前是否在分配内存(PF_MEMALLOC)
        int prio, static_prio;// static_prio 优先级
        struct list_head tasks;
        struct mm_struct *mm, *active_mm;// mm 代表的是进程的内存描述符, //active_mm 则是前一个进程的内存描述符(为改进上下文切换时间的一种优化)。
 
        pid_t pid;
        pid_t tgid;
 
        struct task_struct *real_parent;
        char comm[TASK_COMM_LEN];// 可执行程序的名称
        struct thread_struct thread;// 标识进程的存储状态
        struct files_struct *files;
        ...
};

3 线程

3.1定义
线程:线程是进程的一个实体,是CPU调度和分派的基本单位。
3.2 属性
(1)基本不拥有资源,出保证其运行的基本数据,如TCB. TCB用于指示被执行指令序列的程序计数器,保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈.
(2)调度和分派的基本单位
(3)可并发执行
(4)共享进程资源
在同一进程中的各个线程都可以共享该进程所拥有的资源(read only data).

4 进程与线程

4.1 调度
如果CPU直接对进程进行调度,由于进程拥有资源,那么调度的时候开销会很大。所以才有了线程,线程基本不拥有资源,这样CPU进行调度的时候,只作用于线程,这样就可以大大降低开销.从而可显著地提高系统的并发程度。在同一进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,将会引起进程的切换。
4.2 并发性
多个进程之间可以并发执行.
一个进程可以拥有多个线程,线程也可以并发执行.这样线程可以共享资源,提高系统的吞吐量.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值