计算机专业就业指导(Java)之基础技术测试篇(七)

基础技术测试篇(七)

3.操作系统

操作系统控制和管理计算机系统内各种硬件和软件资源,合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口的作用。因此无论是应聘硬件开发的编程工作还是应聘应用软件开发编程工作,都必须对操作系统的知识十分熟悉。

3.1 进程与线程

例题1:简述进程与线程的差别

答案:线程是指进程内的一个执行单元,也是进程内的可调度实体。与进程的区别主要包括以下几个方面:(1)调度,线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性,不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。(3)拥有资源。进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源(4)系统开销,在创建或撤销进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销。

Tips:进程和线程都是程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;进程正好相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

例题2:简述进程间的通信方式

答案:所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信时一个广义上的意义,不仅仅指传递一些消息。常用的进程间通信方式包括:信号、信号量、消息队列、共享内存。这些通信方式的使用方法基本相同,所以只要掌握了一种方式的使用方法,其他方式的使用方法也就容易理解了。下面就以信号量为例,简单描述进程间的通信方式。信号和信号量是不同的,虽然它们都可用来实现同步和互斥+,但前者是使用信号处理器来进行的,后者是使用P,V操作来实现的。使用信号要先知道有哪些信号,例如,在Linux下有31个需要记住的通用信号,这也是System V中最常用的那些。  在使用信号以前,首先要初始化信号集,只有在信号集里面的信号才会被考虑。有两种方法可以初始化信号集,一种是设置空信号集,另一种是将所有的信号都加到信号集中。如果想要的信号量不是这两种,可以在初始化以后通过添加和删除信号进行定制。如果在进程执行的一段时间内不想对某些进行响应,可以对当前的信号集中的一些信号进行阻塞,稍后再执行。 信号集设置完毕以后,在让其工作之前需要安装信号处理器。所谓的信号处理器,就是为信号指定了一些处理方法,安装信号处理器是使正确的信号进行正确的处理的关键。在在安装时,一定要向特定的信号赋予正确的信号处理函数。安装信号处理器可以实现这几个功能:指定信号处理函数的入口,指定信号屏蔽集合,指定信号处理器的一些标志。 最后需要用信号来进行进程间的同步。同步的实现主要是通过在接受信号之前挂起进程,等待相关信号。

Tips:Linux操作系统中的进程间通信比较具有代表性,主要包括以下几种方式:

(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另外一个与它有共同祖先的进程之间的通信。

(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能之外,它还允许无亲缘关系进程间的通信。命名管道文件系统中有对应的文件名。

(3)信号(Signal):信号是比较复杂的通信方式,用于通知接收进程有某种时间发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)

(4)消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列、System V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读取队列中的消息。消息队列克服了信号承载信息量小,管道只能承载无格式字节流以及缓冲区大小受限等缺陷。

(5)共享内存:共享内存使得多个进程可以可以访问同一块内存空间,是针对其他通信机制运行效率低而设计的。往往与其他通信机制,如信号量结合使用,来达到进程间的同步及互斥。

(6)内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现内存映射。

(7)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。

(8)套接口(Socket):更为一般的进程间通信机制,,可 用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,现在一般可以移植到其他类Unix系统上:Linux和System V的变种都支持套接字。

例题3:简述进程控制块(PCB)的作用

答案:进程控制块是进程实体的一部分,是操作系统为了管理进程设置的一个专门的数据结构。它记录了操作系统所需要的,用于描述进程情况及控制进程运行所需要的全部信息。操作系统是根据PCB来对并发执行的进程进行控制和管理的,所以PCB是系统感知进程存在的唯一标志。进程与PCB是一一对应的。

Tips:从结构上看,进程实体是由程序段、数据段及进程控制块三部分组成。其中进程控制块是控制和管理进程的核心。在不同的操作系统中,对进程的控制和管理机制不同,PCB中的信息也有些不同,通常PCB应包含如下一些信息。

(1)进程标识符name:每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数字。

(2)进程当前状态status:说明进程当前所在的状态。为便于管理,系统设计时会将相同状态的进程组成一个队列,如就绪进程队列,等待进程队列则根据等待的事件组成多个等待队列,如等待打印机队列、等待磁盘I/O完成队列等。

(3)进程相应的程序和数据地址:通过这些把PCB与其程序和数据联系起来

(4)进程资源清单:列出所拥有的除CPU外的资源记录,如拥有的I/O设备,打开的文件列表等。

(5)进程优先级priority:j进程优先级反映进程的紧迫程度,通常由用户指定和系统设置。

(6)CPU现场保护区cpustatus:当进程因某种原因不能继续占用CPU时,(如等待打印机),释放CPU,这时就要将CPU的各种状态信息保护起来,为将来再次得到处理机恢复CPU的各种状态,继续运行。

(7)进程同步与通信机制:用于实现进程间互斥、同步和通信所需的信号量等

(8)进程所在队列PCB的链接字:根据进程所处的现行状态,进程相应的PCB添加到不同队列中。PCB连接字指出该进程所在队列中下一个进程PCB的地址。

(9)与进程有关的其他信息。如进程记账信息。进程占用CPU的时间等

例题4:什么是进程的优先级?优先级的作用是什么?

答案:每个进程都具有相应的优先级,优先级决定它何时运行和接收多少的CPU时间。Windows操作系统的优先级共有32级,用从0到31的数值表示,称为基本优先级别(base priority level),系统按照不同的优先级调度进程的运行。0-15级是普通优先级,进程的优先级可以动态变化,高优先级进程优先运行,只有高优先级进程优先运行,只有高优先级进程不运行时,才调度低优先级进程运行。优先级相同的进程按照时间片轮流运行。16-31是实时优先级,实时优先级与普通优先级的最大区别在于相同优先级进程运行不按照时间片轮转,而是先运行的进程先控制CPU,如果它不主动放弃控制,同级或低优先级的进程就无法运行。

Tips:操作系统中的进程的优先级不是固定的不变的,在多道操作系统中,多进程是并发进行的。为了提高系统性能解决进程死锁问题,进程的优先级是动态变化的。调整系统进程优先级可以让程序运行得更加顺畅。正在执行的进程优先级会随时间降低,而挂起的进程或等待的进程的优先级会逐渐升高,这样就解决了操作系统中一个低优先级程序长期占据CPU,而高优先级进程却迟迟得不到处理的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值