网站首页  词典首页

请输入您要查询的论文:

 

标题 操作系统中进程与线程的教学探讨
范文

    仝瑞阳

    摘 要:本文阐述了进程、线程概念,描述了进程与线程的关系;通过我们熟悉的知识竞赛场景做类比,能深入浅出地理解操作系统中的进程、线程概念及执行过程;以门钥匙为例生动、形象地诠释了进程间的通讯、同步与互斥机制;阐述了进程、线程的创建方法以及应用特征。

    关键词:进程;线程;并发;共享;資源

    0引言

    操作系统是应用程序(用户)与计算机硬件的中间层,其管理计算机软硬件、为用户提供接口。操作系统的核心是进程、线程的调度执行;为了提高CPU的执行效率引入多进程、多线程机制,准确理解进程、线程是掌握操作系统原理的关键。

    1进程与线程

    进程:是有独立功能的程序在一个数据集合上运行的过程,是一个被操作系统进行资源分配和调度的一个独立调度单位。由机器指令、数据、堆栈和控制等部分组成。进程是程序执行的过程;进程有就绪、执行、阻塞等几种状态。

    线程:是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源[1]。

    进程和线程的关系:线程是进程的一部分,一个线程只能属于一个进程,一个进程可以有多个线程,但至少有一个线程。

    进程和线程的区别:进程是操作系统资源(中央处理器、内存、文件、网络等)分配的基本单位;线程是任务调度和执行的基本单位(占用CPU)。每个进程都有独立的代码和数据空间,线程有独立的运行栈和程序计数器,因此进程之间切换开销大,线程之间切换开销小,故线程又叫轻量级进程。系统为每个进程分配不同的内存空间;线程除CPU外不单独分配内存(使用其所属进程的资源,线程组共享)。

    多进程是多个进程同时存在于内存中形成并发执行(不是同时执行)。

    为理解进程、线程,现举一我们熟悉的知识竞赛场景对照描述:舞台上有n个队,每队有m个队员进行抢答,抢答器系统对应CPU,一个队对应一个进程,一个人对应一个线程。此时就相当于有n个进程,每个进程拥有m个线程。

    一个队占有一个抢答台位相当于一个进程拥有的内存空间,m个队员共享。

    某队员抢答有效进行发言相当于线程拥有CPU执行。

    进程调度:调度算法有先来先服务(FCFS)、轮转(RR)、优先级、多队列、多级反馈队列等。调度方式有抢占式、非抢占式。队员争抢过程相当于非抢占式、先来先服务进程调度方法。

    2 进程间通信与同步

    虚拟内存机制(程序运行时以分页、段方式把一部分部分调入内存[2])为进程管理存储资源带来了种种好处,但是也给进程带来了一些麻烦,因为每个进程拥有独立的虚拟内存地址空间,所以对不同的进程来说一个相同的虚拟地址以为着不同的物理地址。CPU执行指令是采用了虚拟地址,对于一个特定的变量来说,对应着一个特定的虚拟地址。因此两个进程不能通过简单的共享变量的方式来进行通信,只能用信号、管道等方式通信,效率比直接共享内存方式差。

    进程互斥与同步:多进程并发执行会出现争用资源,若资源唯一(象独木桥一次只许一人),就必须对资源使用进行限制,争用这一资源的进程称为是互斥关系,某段时间只能某个进程占用资源。若某两个或几个进程执行顺序先后是确定的不能改变(如生产和消费必须是先生产再消费)称这两个进程是同步关系。

    互斥、同步通过信号量机制给以保障。信号量相当于门锁的钥匙,互斥相当于只有一把钥匙,拿到钥匙者开锁进门,出来时交出钥匙,只能一人进门(实现原语操作);同步的实现用两层信号量,相当于两道门锁,第一道门是先后次序(生产先执行,消费者看有产品再执行)的控制,第二道门实现互斥。

    3进程、线程创建

    进程创建唯一方法是调用函数fork(),该调用创建一个与原进程代码完全一样的子进程,原进程称为父进程,新进程称为子进程,父子进程不同的是进程标识号(PID)以及它们的进程控制块(PCB)中的父子进程标识号记录字段,通过下面代码作一说明:

    If(fort()==0)

    Printf(“I am? son_process\n”);

    else

    Printf(“I am father_process\n”);

    Sleep(1);

    执行结果是I am? son_process

    I am fathe_rprocess

    或者: I am father_process

    I am? son_proces

    从结果看if与else中的代码都完成一次执行,说明fort()向父进程返回了不为0的值(即进程的ID)而向子进程返回了0值。

    线程创建:C语言利用Pthreads库创建线程数据结构,Pthreads运行在用户空间,内核调度实体(KSE)运行在内核空间;Linux内核提供clone系统调用创建类似线程的轻量级进程[3]。

    Java中线程的实现:Java语言提供了java.lang.Thread类来表示线程,提供了run方法表示线程的运行的逻辑控制流[4]。

    4结语

    构建并发程序可以基于进程也可基于线程,现代多任务操作系统(如WINDOWS)采用时间片轮转调度的多线程方式,由于切换开销比进程小,并发执行效率高。

    参考文献:

    [1]汤小丹,梁红兵,哲凤屏,等. 计算机操作系统.4版. 西安:西安电子科技大学出版社, 2019 ,39-40

    [2]白中英,戴志涛.计算机组成原理.6版.北京:科学出版社,2019,104-105

    [3]邵国金等.Linux操作系统.3版.电子工业出版社,2018,339

    [4]软件开发技术联盟.Java开发实战.清华大学出版社,2013,237-238

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/16 7:33:32