已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.4线程及其实现,2.4.1引入多线程的动机2.4.2多线程环境中的进程和线程2.4.3线程的实现,2.4.1引入多线程的动机,单线程(结构)进程(SingleThreadedProcess)多线程(结构)进程(MultipleThreadedprocess),线程的概念(1),操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率,操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。,线程的概念(2),解决问题的基本思路:把进程的两项功能“独立分配资源”与“被调度分派执行”分离开来,进程作为系统资源分配和保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。,多线程结构进程的优点,1.快速线程切换:2.通信易于实现:3.减少管理开销:4.并发程度提高:,2.4.2多线程环境中的进程与线程,多线程结构进程,多线程环境中进程的定义,进程是操作系统中除处理器外进行的资源分配和保护的基本单位。它有独立的虚拟地址空间,容纳进程映像(如与进程关联的程序与数据),并以进程为单位对各种资源实施保护,如受保护地访问处理器、文件、外部设备及其他进程(进程间通信)。,多线程环境中的线程概念,线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。,线程组成,()线程唯一标识符及线程状态信息(运行态、就绪态、阻塞态和终止态);()线程是一条执行路径,有独立的程序计数器;未运行时保护线程上下文。()线程有执行栈和存放局部变量的私用存储空间。(4)可访问所属进程的内存和资源,并与该进程中的其他线程共享这些资源。,线程又称轻量进程,线程运行在进程的上下文中,并使用进程的资源和环境。系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程。Linux线程做法不一样。,线程的状态,线程状态有:运行、就绪、等待和终止,状态转换也类似于进程。挂起状态对线程是没有意义,如果进程挂起后被对换出主存,则它的所有线程因共享进程的地址空间,也必须全部对换出去。,多线程技术的应用,进程中线程多种组织方式:第一种是调度员工作者模式第二种是组模式第三种是流水线模式多线程技术的应用前台和后台工作C/S应用模式异步处理加快执行速度。设计用户接口。,2.4.3线程的实现,从实现角度看,线程分成:用户级线程ULT(如Java,Informix)。内核级线程KLT(如OS/2)。混合式线程(如Solaris)。,各种线程实现方式的优点和缺点。,线程调度,(1)当若干进程都有多个线程时,就存在两个层次的并行:进程和线程。操作系统调度程序需要根据是用户级线程还是内核级线程来决定对进程和线程的调度方法。(2)用户级线程的调度:(3)内核级线程的调度;(4)用户级线程和内核级线程调度之间的差别:,2.5Linux进程,进程描述符task_struct中包含:进程标识、进程状态、链接信息、环境信息、优先级信息、调度信息、通信信息、文件信息、虚存空间信息、信号处理信息、家族信息等。Linux中认为线程就是共享地址空间及其他资源的进程,故并没有单独为线程定义数据结构,有一套在用户模式下运行的线程库-pthread,但每个线程都拥有惟一隶属于自己的task_struct。,Linux2.6进程核心栈、PCB和虚存映象,Linux进程的运行环境信息thread_info结构,包含:进程描述符task_struct指针、当前CPU号、底层标志、线程同步标志、内核抢占计数器等。,Linux2.6task_struct,增加用于调度的新成员,主要有:动态优先级prio静态优先级static_prio正常优先级normal_prio优先级数组prio_array进程平均等待时间sleep_avg负载平衡权重load_weight等,Linux2.6进程描述符分配和删除,(1)进程描述符分配过程(2)进程描述符删除过程,Linux进程队列,(1)进程链表:反映进程创建顺序及其亲属关系。(2)哈希链表:内核快速按pid查找进程。(3)就绪链表:进程就绪队列或运行队列。(4)等待链表:进程各种等待队列。,Linux进程状态,TASK_RUNNINGTASK_INTERRUPTIBLETASK_UNINTERRUPTIBLETASK_ZOMBIETASK_STOPPEDTASK_SWAPPING,Linux进程状态及转换,创建进程,TASK_RUNNING,Linux进程/线程创建和终止,(1)创建进程1)fork()-创建一般进程。2)vfork()-创建完成特定任务的子进程。3)clone()-创建线程。4)创建函数的实现。,1)fork(),#includestdio.hvoidmain(intargc,char*argv)pid_tpid;pid=fork();/*创建子进程*/if(pid0)/*创建出错*/fprint(stderr,“forkfailed”);exit(-1);elseif(pid=0)/*子进程*/execlp(“/bin/ls”,“ls”,NULL);elsewait(NULL);/*父进程等待子进程完成*/printf(“childcomplete”)exit(0);,2)vfork(),vfork()函数创建子进程后,父进程被阻塞,直到子进程执行exec()或exit()。允许子进程借用父进程的地址空间,执行结束后,归还地址空间并唤醒父进程,以减少不必要的开销。,3)clone()(1),在Linux系统中,线程被认为是一个与其他进程共享资源的进程,故被当作进程来实现,每个线程也用task_struct结构体描述。在Linux系统中,线程仅仅是一种进程间共享资源的方法。,clone()(2),clone()用来创建线程。共享标志:CLONE_VM:父子进程共享进程空间。CLONE_FS:父子进程共享文件系统信息。CLONE_FILES:父子进程共享打开的文件。CLONE_SIGCHLD:子进程终结或者暂停时给父进程发信号。CLONE_SIGHAND:父子进程共享信号处理函数。CLONE_PID:父子进程共享进程标识符。CLONE_VFORK:父进程在子进程释放空间时被唤醒。,4)do_fork()(1),为子进程分配pid。创建task_struct结构。分配thread_info结构和核心栈。复制父进程的task_struct信息和thread_info信息。分配和初始化进程记账信息。根据标志复制并继承父进程的信号量、文件、信号和进程地址空间和名字空间等信息。,do_fork()(2),初始化核心栈、状态设置为TASK_RUNNING,并将父进程时间片余额的一半分给它。将子进程插入双向链表哈希链表。如果clone_flags包含CLONE_STOPPED标志,把子进程状态改为TASK_STOPPED;否则调用_activate_task()将子进程加入运行队列。如果clone_flags包含CLONE_VFORK标志,把父进程设置为阻塞状态直到子进程释放进程地址空间。,5)进程终止,设置标志。需要时从某些队列中移出进程。调用_exit_mm()、_exit_files()、_exit_fs()、exit_sem()、exit_sighand()、exit_namespace()、exit_thread()释放进程占用的各种资源。释放资源时,先将共享计数器减1,若不为0表明有其他进程在使用该资源,此时直接返回。否则才真正释放资源。设置进程退出码,处理进程与父进程和子进程的关系。在该函数中,置状态为TASK_ZOMBIE,使其成为僵死进程。调用schedule()函数调度并切换到其他进程。,6)创建内核线程,内核线程运行于内核态且只访问内核空间中的信息,既没有独立地址空间,也不切
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多职能团队绩效评估指标体系模板
- 律师从业资格考试及答案解析
- 2025年教育培训行业在线教育平台质评报告
- 地铁土建安全员考试题库及答案解析
- 企业信誉长期维护承诺书(9篇)
- 2025年人工智能行业人才培养与产业发展研究报告及未来发展趋势预测
- 银行从业资格证考试桂林及答案解析
- 2025年新能源行业智能电网技术应用现状研究报告及未来发展趋势预测
- 企业品牌传播活动策划与执行工具
- 2025年数字化营销行业消费者画像与精准营销研究报告及未来发展趋势预测
- 凸透镜成像规律动画可拖动最佳版swf
- FZ/T 01130-2016非织造布吸油性能的检测和评价
- 巴尔麦氏与现代养猪生产
- 设备设计模板2-用于合并
- 黑布林-Peter-Pan-中英双语阅读
- 新北师大版四年级上册数学第三单元测试卷(乘法)
- 智能家居软件用户手册
- 小学一年级数学上册期中考试试卷
- 谈农业机械化发展中存在的问题与解决对策
- 事业单位-绩效评价工作方案
- 色素上皮衍生因子(PEDF)
评论
0/150
提交评论