当前位置: 首页 > news >正文

做的网站提示磁盘空间不足网站统计代码放哪里

做的网站提示磁盘空间不足,网站统计代码放哪里,分析网站结构,那些网站是做生鲜的操作系统(二): 进程与线程 本章解读 进程管理是操作系统重点中的重点#xff0c;涵盖了操作系统中大部分的知识和考点。其主要包括四部分#xff1a;进程与线程#xff0c;处理器调度#xff0c;同步与互斥#xff0c;死锁。所以我准备分四个部分来解释这四个模块。进程与…操作系统(二): 进程与线程   本章解读 进程管理是操作系统重点中的重点涵盖了操作系统中大部分的知识和考点。其主要包括四部分进程与线程处理器调度同步与互斥死锁。所以我准备分四个部分来解释这四个模块。进程与线程部分考纲内容如下 1.进程概念 2.进程的状态与转换 3.进程控制 4.进程组织 5.进程通信共享存储系统消息传递系统管道通信。 6.线程概念与多线程模型   正文   2.1 进程的概念          2.1.1 程序的顺序执行和并发执行          顺序执行特点顺序性封闭性可再现性 并发执行特点间断性制约性失去封闭性不可再现性。 前趋图是一个有向无循环图用于描述进程之间执行的前后关系。Pi→Pj表示在Pj开始执行前Pi必须完成Pi是Pj的直接前趋Pj是Pi的直接后继。没有前趋的结点称为初始节点没有后继的结点称为终止结点。          例题 ________是多道程序的基本特征。 A.     制约性      B.     顺序性     C.功能的封闭性     D.运行过程中的可再现性 答案A          2.1.2 进程的特征          结构特征进程由程序段、数据段、程序控制块PCB构成。所谓的创建进程实质上是创建进程实体中的PCB撤销进程实质是撤销进程的PCB。          动态性进程是动态的有一定的生命期程序是静态的它只是一组有序指令的结合并存放于某种介质上。          并发性多个进程同时存在于内存中在同一段时间内并发执行。          独立性进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。          异步性进程按相互独立不可预知的速度向前推进。          2.1.3 进程的定义          进程是进程实体的运行过程是系统进行资源分配和调度的一个独立单位。          例题操作系统中可以并行工作的基本单位是___(1)____它也是核心调度及资源分配的基本单位它是由____(2)____组成的它与程序的重要区别之一是____(3)____。          (1)    A. 作业            B.函数               C.进程               D.过程          (2)    A.程序、数据和PCB                         B.程序、数据和标示符                    C.程序、标示符和PCB                    D.数据、标示符和PCB          (3)    A.程序有状态而它没有               B.它有状态而程序没有                    C.程序可占有资源而它不可     D.它能占有资源而程序不能          答案C A D   2.2 进程的状态与转换          三种基本状态就绪态进程已经分配到除了CPU以外的所有必要资源执行态获得CPU资源的就绪态进程阻塞态执行态进程因发生某事件而暂时无法执行就变成了阻塞态。他们之间的关系如下            挂起状态挂起状态又称为静止状态。引入挂起状态的原因有终端用户的调试请求父进程请求负荷调节的需要操作系统的需要对换的需要物理内存资源紧张将内存中阻塞态进程置换到外存上。挂起态分静止就绪态和静止阻塞态他们能分别与活动就绪态以及活动阻塞态进行状态转换此外当静止阻塞态的进程所等待的事件发生时将从静止阻塞态转变成静止就绪态。具有挂起状态的进程状态图如下          创建状态创建进程时若该进程已经拥有了自己的PCB但进程自身还未进入主存则称该状态为创建状态。          终止状态进入终止状态的进程以后不能再执行但正在操作系统中依然保留一个记录其中保存状态码和一些计时统计数据供其他进程收集。一旦其它进程完成了对终止状态进程信息的提取之后操作系统将删除该进程。          具有创建、终止、挂起状态的进程状态图如下     2.3 进程控制          进程的控制包括创建新进程终止已完成或因某事件无法运行的进程负责进程状态转换阻塞与唤醒挂起与激活。进程控制是由操作系统的内核中用原语来实现的。          原语的主要作用是为了实现进程间通信和控制。原语其实是一段实现某种功能的程序指令它与普通程序的区别是原语是原子操作即它的功能要么全做要么全不做它不可能被调度程序中断。原语在操作系统中是一个很重要的概念后面要讲的进程间同步问题所用到的信号量就是使用PV原语来实现的。原子操作在管态下执行常驻内存。 2.3.1 进程的创建 进程之间是存在家族关系的比如父子进程在Linux下可以通过调用fork函数创建子进程。关于进程间的父子关系只需记住两点即可1、子进程可以继承父进程所拥有的所有资源打开的文件申请的缓冲区等 2、当撤销父进程时也必须同时撤销其所有的子进程。这和面向对象中的继承思想非常相似。          进程创建的事件有四类用户登录作业调度提供服务应用请求。          当操作系统发现要求创建新进程的时间后便使用原语创建进程其顺序如下            申请空白PCB申请的PCB具有唯一的标示符。          分配资源给进程分配程序区和数据区的内存空间并加载相应资源。          初始化PCB初始化标识信息、处理器状态信息、处理机控制信息等。          将新进程插入就绪队列如果进程就绪队列能够接纳新进程则将新进程插入就绪队列。 2.3.2 进程的终止 引起进程的事件有三种正常结束异常结束外界干预。 正常结束程序运行到功能完毕时正常的退出。 异常结束越界错误保护错非法指令特权指令错运行超时等待超时算数运算错I/O故障。 外界干预用户或操作系统干预父进程请求父进程终止。          当发生进程终止事件后操作系统调用终止原语按下列过程终止进程1、根据被终止进程标示符找到其PCB读出进程状态。 2、若该进程处在执行态则终止该进程的执行。 3、若进程有子孙进程终止它们。4、将被终止的进程的全部资源归还给其父进程若没有父进程就归还给操作系统。5、将被终止进程的PCB从所在队列移除。 2.3.3 进程的阻塞与唤醒 引起进程的阻塞事件四种请求系统服务等待请求的服务和资源分配、启动某种操作等待某种操作完成如I/O操作、新数据尚未到达等待进程间、网络中消息到来、无新工作可做服务型的进程等待新任务到来。 进程阻塞过程进程调用阻塞原语block把自己阻塞。要被阻塞的进程先停止执行即将PCB中的状态由执行改为阻塞并将PCB插入阻塞队列然后调度程序调度其他进程给处理器执行。          进程唤醒过程当被阻塞进程期待的事件出现由有关进程如之前占用资源现在释放的进程调用唤醒原语wakeup将等待该事件的进程唤醒。首先把被唤醒的进程的PCB从对应事件的阻塞队列中移出将其PCB中的状态由阻塞改为就绪然后将该PCB插入到就绪队列中。          2.3.4进程的挂起与激活          进程的挂起当出现某个引起进程挂起的事件如用户进程请求将自己挂起父进程请求将某子进程挂起等操作系统调用挂起原语suspend将指定进程挂起挂起的过程将就绪进程挂起称为静态就绪进程或将阻塞进程挂起为静止阻塞进程。然后将该进程的PCB复制到某指定的内存区域以方便用户或父进程查看该进程的运行情况。          进程的激活当发生激活进程的事件时如父进程或用户进程请求激活对应进程若该进程驻留在外存而内存已有足够空间则可将外存上的进程换入内存。操作系统调用激活原语active激活指定进程。首先将进程从外存调入内存然后将进程的状态从静止就绪/静止阻塞转变成活动就绪态/活动阻塞态。若采用的是抢占调度策略每当有新进程进入就绪队列时会将新进入的进程和当前执行的进程比较若新进入进程优先级大这把处理器资源分给新进入的进程。   2.4 进程的组织 2.4.1 进程管理块PCB Process Control Block          对PCB的介绍在前面已经提到了它其实是一个数据结构在PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。操作系统就是根据PCB来对并发执行的进程进行控制和管理的。PCB是进程存在的惟一标识。          下图为PCB大致包括的内容            2.4.2 进程控制块的组织方式          即如何将整个系统中成千上万的PCB管理组织起来方法分为链接方式和索引方法两种。   链接方式   索引方式          蝶叔我以前有写过一个以Linux作为平台的进程调度模拟器其中关于PCB的组织方式就是利用类似于索引的方式进行区别在于我将就绪队列按照优先级分为多个队列不同的进程的PCB指针也就放在不同的就绪索引表里。这样在处理器进行调度时每次都从优先级高至低的顺序取出一个进程进行调度这样就可以避免进程的饥饿了。   2.5 进程的通讯          本来这里将介绍进程间同步的问题但由于进程同步是考试中的重点加难点常作为一道大题所以准备放在后面进行专门的讲解。现在先介绍进程间的通讯问题。          2.5.1 进程通信的概念          进程通信指的进程之间的信息交换。进程通信分为低级通信和高级通信。进程的同步和互斥信号量就是低级通信它本质上是使用原语操作共享内存中的数据结构的过程效率低不能用来传输大量数据信息并且对用户不透明所以才出现了考试信号量那道大题哈哈。进程间的高级通讯有共享内存、消息队列、管道、套接字等等其中套接字不仅可用在本机通讯还可用作网络通讯。          2.5.2 共享内存系统共享存储器系统 Shared-Memory System          相互通讯的进程可以通过共享某个内存区域从而实现用该内存区域进行通讯。信号量是共享内存的一个特殊情况信号量就只是共享了一个数据结构的内存。此外高级通讯中的共享内存先向系统申请一个共享内存的区域并分配相应的关键字。若其他进程要访问共享内存则提供这个关键字若存在关键字对应的共享内存区域则返回其描述符。          在Linux 中使用shmget、shmat、shmdt、shmctl这四个函数操作共享内存这里主要介绍前两个函数。          shmget用来创建或获得一个共享内存对象          #define MY_SHM_ID 67480          intfd_shm;          fd_shm shmget(MY_SHM_ID, 4096, 0666 | IPC_CREAT);          MY_SHM_ID是共享内存的关键字若为0则为私有内存常用于父子进程通信若不为0则用于多进程通信。4096表示共享内存大小为4KB第三个参数是共享内存的权限如果该共享内存不存在则创建。          在其他进程中若想访问这个共享内存则fd_shm shmget(MY_SHM_ID, 0, 0);因为该共享内存已存在函数会返回共享内存的标识符。          接着使用shmat把共享内存区对象映射到调用进程的地址空间          void* pshm;          pshm shmat(fd_shm, NULL, 0);          其它两个函数shmdt(断开共享内存连接)shmctl(共享内存管理)在这里介绍没有多大意义介绍这些知识是给大家一个对共享内存更直观的认识。          2.5.3 消息传递系统Message passing system          消息传递系统是当前应用最为广泛的进程通信机制消息队列和套接字都是基于这种机制工作的。此外在微内核操作系统中内核和服务器进程之间的通信都采用了消息传递机制。          消息传递可以分为直接通信和间接通信它们的区别在于直接通信没有缓冲区间接通信有缓冲区。直接通信中源进程将消息直接发往目标进程间接通信中进程通信的消息都放在缓冲区信箱中。信箱又分三类私用信箱其他进程只能发送消息到信箱信箱拥有者可以读取信息、公用信箱由操作系统创建提供给批准的进程使用这些进程可对信箱进行读写、共享信箱由某进程创建创建时指明共享进程的名字这样拥有者和共享者都能对信箱读写。          由于网络通讯就是基于消息传递机制的所以消息传递系统中的通信链路、消息格式其实就对应计算机网络中的数据链路层和网络层。比如消息传递系统的通信链路分点对点传输和多点连接链路广播两类通信方式也可分为单向通信链路单工和双向链路全双工消息格式由消息头和消息正文组成。          在Linux 中使用msgget 、msgsnd、msgrcv、msgctl四个函数操作消息队列。          msgget用来创建或获得消息队列          #defineMY_MSG_ID 52134          msgget(MY_MSG_ID,IPC_CREAT);打开关键字为MY_MSG_ID的消息队列如果不存在则创建返回消息队列的标识符。          msgsnd和msgrcv分别对应消息的发送和接收。          msgctl函数用来对消息队列进行控制和删除。          2.5.4 管道通信pipe          管道是用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件。当一个进程对管道进行操作时其它进程必须等待。只有确定了对方已存在的时候才进行通讯。          在Linux 中用pipe函数创建匿名管道用mkpipe函数创建命名管道命名管道以文件的形式在对应目录下存在用户可以查看到它不过命名管道文件并非真正的文件它存在于内存而非外存这是通过虚拟文件系统VFS来实现的所以对管道的操作可以使用低级文件操作即openreadwriteclose。 2.6 线程          2.6.1 线程的概念          线程引入的目的进程由于自身占有着资源在处理器进行调度时为了实现现场保护要进行较大的开销。所以引入线程是为了减少程序在并发执行时所付出的时间和空间上的开销。          线程具有许多传统进程的特点故线程又称为轻型进程传统进程称为重型进程。在引入了线程的操作系统中一个进程至少由一个线程组成。          线程与进程的区别          1调度线程是处理器调度和分派的基本单位进程作为资源拥有的基本单位。          2并发性引入线程之后不仅仅进程之间可以并发执行而且在一个进程中的多个线程之间也可以并发执行。在多处理器环境下多个处理器同时也不能执行多个进程而是多处理器同时执行同一进程中的多个线程。          3拥有资源一般情况线程不拥有独立的资源而是共享该进程中的资源。          4系统开销线程的切换只需保存和设置少量的寄存器不涉及现场保护操作就切换代价而言线程远高于进程。          综上所述进程的属性有轻型实体独立调度和分派的单位可并发执行共享进程资源。          线程控制块TCB类似于PCB但它是轻型的保存了线程的状态参数如寄存器状态堆栈指针线程运行状态优先级专有存储器信号屏蔽等。其中线程的运行状态只有三个基本状态执行、就绪、阻塞。          进程的创建和终止在Linux 中创建线程使用pthread_create终止进程使用pthread_exit函数。值得注意的是非分离线程终止后并不会立即释放它的资源而我们创建线程默认的都是非分离线程。所以如果我们现在有这样一个线程          voidfunc_thread(void *arg)          {                    //什么也不做                    pthread_exit();          }                   如果用以下伪代码创建线程          for(inti 1 to 10000)                    pthread_create(func_thread);          会发现系统不崩溃也残废这就印证上面的说法。如果要让线程执行完毕后回收资源则需要在调用者线程执行“等待线程终止”的命令这个命令在Linux 为pthread_join函数。它会阻塞当前线程直到要等待的线程结束然后回收它的资源。当然想让线程执行结束都自动回收其资源可以在调用者线程中将创建的线程设为分离线程使用pthread_detach或者pthread_attr_setdetachstate函数。          什么叫分离线程分离线程即分离状态detached的线程与其相反的就是结合态非分离态 joinable。我们知道线程共享进程的所有资源那这个资源也就包括其它线程的信息为了保证线程退出后其资源如打开的文件线程执行的状态记录等可能会被其它线程用到线程执行结束后相关的资源是不会自动回收的这就是线程默认的结合态可以理解为和其它线程结合在一起不能随意回收资源。要想线程执行结束后自动回收资源就需要将线程指明为分离态。关于线程的分离态和结合态大家可以看下这篇文章          http://www.cnblogs.com/mydomain/archive/2011/08/14/2138454.html          2.6.2 线程的同步和通信          多线程操作系统中提供多种同步机制如互斥锁条件变量信号量等等。详细的内容在后面会慢慢介绍。这里说一下条件变量          如果只是用互斥锁当线程A占有资源A想要资源B线程B占有资源B想要资源A时就会出现死锁。解决方法就是使用条件变量因为线程A想要资源B时资源A此时是线程A不会用到的所以只要将它释放掉即可。条件变量就起到标记资源的状态的作用通过互斥锁来改变条件变量进行资源的占有和释放。          2.6.3 线程的实现方式          线程的实现方式分三种内核支持线程KST kernel Supported Threads、用户级线程ULT User Level Threads、内核线程和用户线程的组合。          内核支持线程即线程是在内核的支持下运行的无论用户级线程还是内核中的线程他们的创建、撤销和调度都是内核来进行的。它的优点多个线程可以并行执行在多个处理器上当一个线程阻塞时操作系统会调度其他线程占有处理器内核里的线程速度快开销小。但缺点是用户级线程的操作需要从用户态进入到内核态开销较大。          用户级线程线程存在于用户空间里对线程的创建、撤销和调度等操作都不需要系统调用。也就是说就算系统内核不支持多线程用户空间里的进程也可以拥有多线程。由于不会涉及到系统调用并且线程调度比进程调度来的简单所以使得线程切换的速度特别快。值得指出的是用户级线程其实是将系统分给每个进程的时间片再进行时分复用的比如一个进程的时间片为1它有100个用户级线程那么每个线程的时间只有1/100。用户级线程的优点就是节约了模式切换的开销和内核的资源灵活性高不同进程可以选择不同的线程调度算法用户级线程的实现与操作系统平台无关操作系统不知道用户级线程的存在可以在不支持多线程的操作系统运行。但用户级线程有两个很大的缺点一是当一个线程阻塞时整个进程中所有的线程也就阻塞了。二是在多处理器平台上不能实现多线程在多处理器上并行执行。          组合方式其实就是将内核支持线程和用户级线程结合在一起取长补短实现了内核支持线程的功能又保证用户级线程调度的快速。          2.6.4 线程的实现          1内核支持线程的实现          系统在创建一个新进程时内核会为它分配一个任务数据区PTDAPer Task Data Area其中包括了若干线程的线程控制块TCB操作系统内核通过这些TCB来分辨线程。          2用户级线程的实现          用户级线程在用户空间实现但它们都运行在一个中间系统之上。中间系统有两种运行时系统和内核控制线程。          运行时系统Runtime System它实质上是用于管理和控制线程的函数的集合其中包括创建、撤销、调度线程等操作的函数。用户级线程的操作不会直接使用系统调用而是将相关的请求发给运行时系统由运行时系统进行相关系统调用来和内核交流。          内核控制线程这种线程又称为轻型线程LWPLight Weight Process。这是内核支持线程和用户级线程的组合方式中的线程调度将一个用户级线程连接到LWP上该用户线程就具有了内核支持线程的所有属性。如下图            内核相当于一个服务器而内核线程就对应了内核的各种功能性的服务。用户级线程可以通过LWP来访问内核内核不知道用户级线程的存在内核只能看到LWP。由于LWP数量有限常常将LWP做成线程池使多个用户级线程多路复用一个LWP。          用户级线程可以独立于内核运行与内核无关。也就是说当用户级线程不需要与内核通信时并不需要LWP当要通信时就需要借助LWP并且一个要通信的用户级线程就对应一个LWP。再说明白点LWP就是内核线程提供给用户级线程访问内核的一个接口。          那么我们就要思考了传统内核支持线程中的用户级线程和使用结合方式下的用户级线程有什么区别呢内核支持线程中的用户线程的所有操作创建、撤销、调度、通信等都需要经过内核那么这里的用户态和内核态的切换需要花费很多时间而结合方式里引入了LWP在平常情况不访问内核下用户级线程跟操作系统无关是通过时分复用进程的时间片来工作的当需要访问内核与内核通信时用户级线程连接到一个LWP上通过LWP与内核通信。这样结合方式下的用户级线程在平常的调度等操作不需要访问内核加快了执行效率当需要访问内核时通过LWP来实现与内核通信这样实现了扬长避短。          所以下面两句话都是正确的          1 在内核级线程执行操作时如果发生阻塞则与之相连接的多个LWP也将随之阻塞进而使连接到LWP上的用户级线程也被阻塞。如果进程只包含一个LWP则此时进程应阻塞。          2 若进程包含多个LWP当一个LWP阻塞时进程中另一个LWP可继续执行就算进程中所有的LWP全部阻塞进程中的线程也依然能继续执行只是不能再访问内核了。          想要了解更多的朋友可以看下这个链接          http://blog.163.com/jiams_wang/blog/static/303391492012103010374038/            由于时间仓促后面的内容就没有找习题了相关教材参考书和网上有很多习题大家自行找找。    转载于:https://www.cnblogs.com/jiangu66/p/3217685.html
http://www.zqtcl.cn/news/306100/

相关文章:

  • 手机网站 像素网站建设生意怎么样
  • html5网站源代码凡科互动app下载
  • asp评价网站开发文档福州做网站的哪家好
  • 合肥网站建设方案优化写作网站大全
  • 专门提供做ppt小素材的网站网站定位
  • 临沂市建设局兰山区网站wordpress 去除下划线
  • 如何做一张图片的网站关于实验室建设的英文网站
  • 网站建设文本居中代码山东网站推广营销设计
  • 山东桓台建设招投标网站北京建设信息港网站
  • 为什么网站要域名个人养老金制度最新消息
  • 公众号开发是不是网站开发公司网站建设分录
  • 云南省住房建设厅网站代理二级分销系统
  • 四川建设人才培训网站临沂网站制作页面
  • 用vue做网站建设工程合同属于什么合同
  • 赶集的网站怎么做广告投放报价
  • php 家政网站白嫖云服务器
  • 长春网站关键词推广优秀网站建设哪个公司好
  • php实战做网站视频教程站长工具网站测速
  • 当下网站建设常见的网址有哪些
  • 洪雅网站建设事业单位门户网站建设包含内容
  • 外网如何查看局域网建设的网站区块链开发工程师要求
  • 网站首页三张海报做多大怎么做网上直营店网站
  • 网站制作新手教程视频省建设厅网站安全生产标准化
  • 自动建设网站系统阿里云虚拟主机多网站
  • 区块链app排名网站seo其应用
  • 海口网站建设咨询一般网站建设需求有哪些方面
  • 免费网站建设朋友交流模板王网站
  • wordpress不同分类不同广告 文章属于不同分类网站 优化手机版
  • 淮安市建设银行网站首页王也是谁
  • 好用的网站管理系统给wordpress程序提速