进程、线程、程序

1 篇文章 0 订阅

进程与线程:

进程

是一个具有一定独立功能的程序的一次运行活动。

特点:

动态性
并发性
独立性
异步性

状态:

这里写图片描述

进程ID

(PID):标识进程的唯一数字
父进程的ID(PPID)
启动进程的用户ID(UID)

进程互斥

进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个
进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资
源为止。

临界资源

操作系统中将一次只允许一个进程访问的资源称为临界资源。

临界区

进程中访问临界资源的那段程序代码称为临界区。为实现对临界资源的互斥访
问,应保证诸进程互斥地进入各自的临界区。

进程同步

一组并发进程按一定的顺序执行的过程称为进程间的同步。具有同步关系
的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或事
件。

进程调度

概念:
按一定算法,从一组待运行的进程
中选出一个来占有CPU运行。
调度方式:
• 抢占式
• 非抢占式
调度算法
先来先服务调度算法
短进程优先调度算法
高优先级优先调度算法
时间片轮转法

死锁

多个进程因竞争资源而形成一种僵局,若无外力作用,这些进程都将永远不能再向前推进。

线程

线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT、Linux。

优点

使用多线程的理由之一是:
和进程相比,它是一种非常“节俭”的多任务操作方式。在Linux系统下,启动一个新的进程
必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。
运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换
所需的时间也远远小于进程间切换所需要的时间。据统计,一个进程的开销大约是一个
线程开销的30倍左右。
使用多线程的理由之二是:
线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
除了以上所说的优点外,多线程程序作为一种多任务、并发的工作方式,有如下优点:
使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。
Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多
线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。

进程与程序:

程序

是存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。

进程

是一个执行中的程序。它是动态的实体。

进程四要素

  1. 有一段程序供其执行。这段程序不一定是某个进程所专有,可以与其他进程共用。
  2. 有进程专用的内核空间堆栈。
  3. 在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结
    构,进程才能成为内核调度的一个基本单位接受内核的调度。
  4. 有独立的用户空间。
    这里写图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值