zoukankan      html  css  js  c++  java
  • 华为内部面试题库---(1)

    摘自:https://www.cnblogs.com/hehehaha/archive/2013/05/20/6332769.html

    1.启动init进程前,不需要经过()步骤。
    A.加载内核
    B.检测内存
    C.加载文件系统
    D.启动网络支持

    答案:D

    Linux启动过程可以分为以下几个步骤:

    1 BIOS自检。即进行所谓的POST(Power On SelfTest),然后根据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入"引导块"。

    2启动GRUB/LILO。引导操作系统。

    3加载内核。当内核映像被加载到内存之后,对内核映像中包含的内核进行解压,然后将其放入高端内存中,再调用内核,并开始启动内核引导的过程。

    4执行/sbin/init进程。init进程是所有进程的发起者和控制者。因为在任何Linux中,它都是第一个运行的进程,所以init进程的编号(Process ID,PID)永远是1。如果init出现了问题,系统的其余部分也就随之而垮掉了。

    5通过/etc/inittab文件进行初始化,如设置键盘、字体,装载模块,设置网络,等等。

    由此可见,启动过程,主要是将硬盘/软盘/CDROM等的内核拷入内存,并执行,ABC三项分别在3、1、3步骤被执行,均在运行init进程之前,而设置网络是在init进程之后才进行的初始化。答案选D

    2.字符设备文件类型的标志是()

    A. p
    B. c
    C. s
    D. l

    答案:B

    文件标志    文件类型    例子

    ---------------------------------------------------------------------------

    -                 普通文件     数据文件、ASCII纯文本文件或者程序

    d                 目录            /bin、/mnt和 /home

    b                 块设备        /dev/hda

    c                 字符设备    /dev/ttyS0 (与DOS的串口1等同)

    s                 套接字        /dev/log

    p                 命名管道    /dev/initct1 (与"|"等同)

    l                  符号链接    /etc/grub.conf -> ../boot/grub/grub.conf

    表示文件权限的三个字符,依次代表读、写和执行权限。系统用“ r”代表读权限、“w”

    代表写权限、“x”代表执行权限。当用户没有相应的权限时,该权限对应的位置用短线“ -”

    表示。

    在L i n u x中,使用chmod命令来进行有关权限的设置,详见 man chmod

    3.下列()设备是字符设备

    A. hdc

    B. fd0

    C. hda1

    D. tty1

    答案:D

    hdc:Linux下对IDE的设备是以hd命名的,第一个ide设备是hda,第二个是hdb,依此类推;SCSI接口设备是用sd命名的,第一个设备是sda,第二个是sdb,依此类推

    fd0:对应软驱设备文件(fd0、fd1);

    hda1:第一个ide设备的第一个分区;

    tty1:第一个虚拟终端设备

    前三个磁盘相关设备是块设备

    虚拟终端则是字符设备

    字符设备和块设备的根本区别在于是否可以被随机访问。

    4.在操作系统中,若P、V操作的信号量S的初值为2,当前值为-1,则表示等待信号量S的任务个数为()

    A. 0

    B. 1

    C. 2

    D .3

    PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。

    信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新的变量类型(semaphore)来记录当前可用资源的数量。有两种实现方式:

    1)semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,而正数表示当前空闲资源的数量;

    2) semaphore的取值可正可负,负数的绝对值表示正在等待进入临界区的进程个数。

    信号量是由操作系统来维护的,用户进程只能通过初始化和PV原语来访问。初始化可指定一个非负整数,即空闲资源总数。

    本次答案为B。

    5.存储器管理的主要功能是内存分配、地址映射、内存保护和(  )
    A.内存扩充
    B.外存扩充
    C.内存和外存扩充
    D.地址保护

    答案:A 

          存储器管理是操作系统中的一个组成部分。它包括决定存储分配的策略、分配和回收各存储区、登记各存储区的状态表等功能。对虚拟存储管理还应包括页面分配、管理和调度等功能。

         存储分配的方法有下列几种:

         ①操作系统占有存储器的上部或下部,其它部分供用户使用。这种方法称为单一连续分配,是最简单的存储管理方法。这种分配方法的优点是软件处理简单。最大缺点是存储器不能充分利用,留有一块空白区,存储区利用效率低。

         ②分区分配是适合用于多道程序系统的最简单的存储管理方式。这种方式是将存储器分成许多大小不一定相等的区,在每一个区中按照连续分配的方式分配一个作业。这种方式存储器的利用率有所提高,但仍存在存储器的碎片问题。

          ③可重定位分区分配是通过“紧凑”的过程,使存储器中的作业重定位,从而使空白区连成一片。这种方法的优点是减少了碎片,提高了CPU和存储器的利用率。其缺点是重定位花费时间较多,降低了系统的速度。

         ④分页分配是将存储空间和作业的地址空间分成若干等分并进行编号,彼此建立一定的映射关系,使一个连续的作业在存储器中不一定连续存放。这种方法进一步减少了碎片,提高CPU和存储器的利用率。缺点是仍存在碎片。

         ⑤分段分配是按照相对完整的信息组大小划分存储空间。这样便于实现存储保护,在多道程序中,某些段可以共享。

          ⑥段页分配是把每段再分成固定大小的若干页。这种分配方法兼具有分段和分页的优点。但其操作系统较为复杂,增加了硬件成本及处理器的额外负担。这种分配方法多用于大型计算机系统中。

    6.在下列文件的物理结构中,  (  )不利于文件长度动态增长。

    A.顺序结构    B.链接结构  C.索引结构    D.Hash结构

    案:A

    连续文件:

     定义:将一个文件中逻辑上连续的信息存放到存储介质的依次相邻的块上便形成顺序结构,这类文件叫连续文件,又称顺序文件。

     优点:

          简单;支持顺序存取和随机存取;顺序存取速度快;所需的磁盘寻道次数和寻道时间最少。

     缺点:

         建立文件前需要能预先确定文件长度,以便分配存储空间;修改、插入和增生文件记录有困难;对直接存储器作连续分配,会造成少量空闲块的浪费。

    链接文件:

     定义:一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块.

     优点:提高了磁盘空间利用率,不存在外部碎片问题;有利于文件插入和删除;有利于文件动态扩充.

     缺点:

          存取速度慢,不适于随机存取;可靠性问题,如指针出错; 更多的寻道次数和寻道时间; 链接指针占用一定的空间.

    索引文件:

      定义:一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构----索引表,表中每一栏目指出文件信息所在的逻辑块号和与之对应的物理块号。索引表的物理地址则由文件说明信息项给出。

      优点:

          保持了链接结构的优点,又解决了其缺点: 即能顺序存取,又能随机存取;满足了文件动态增长、插入删除的要求;也能充分利用外存空间.

      缺点:

          较多的寻道次数和寻道时间; 索引表本身带来了系统开销如:内外存空间,存取时间.

    Hash结构:

       定义:目录项信息存在一哈希表中,搜索时根据文件名计算哈希值,得到一个指向表中文件的指针

      优点:能够随机快速存取文件

      缺点: 哈希函数比较复杂; 哈希表也需要占有一定的存储空间; 需要解决地址冲突问题

    7.下面关于UNIX系统中缓冲区的说法错误的是(  )。

        A.采用缓冲技术实现设备读写操作可减少设备启动次数并提高系统吞吐量

        B.磁盘缓冲区可以分为数据块和缓冲区控制块

        C.块设备可以通过缓冲区管理实现读写信息传递工作

        D.字符设备可以通过缓冲区管理实现读写信息传递工作

    答案:D 

    UNIX采用缓冲技术实现设备的读写操作:

    对写操作,驱动程序分配一个“缓冲区”,先从用户空间把信息拷贝到缓冲区,在从缓冲区输出到设备;

    对读操作,先从设备接收信息到缓冲区再将信息拷贝到指定的用户空间。

    这样做的目的是为了减少对块设备的访问次数,减少输入输出操作所区费的时间。提高整个系统的吞吐量。

    UNIX系统为磁盘的读写操作设置了一组缓冲区,构成缓冲区池。

    每个缓冲区包含用于存放磁盘块信息的缓冲区数据块和用于缓冲区管理的缓冲区控制块。

    Linux系统的设备可分为字符设备和块设备。

    字符设备是指存取时没有缓存的设备,以字节为单位与内存交换信息,如鼠标、键盘。

    块设备的读写都有缓存来支持,以块为单位每次与内存交换一组信息,如磁盘。

    8.缓冲技术中使用的缓冲池是在( )

    A.主存    B.ROM   C.外存   D.寄存器

    答案:A 

    缓冲技术简要介绍

      缓冲技术是为了协调吞吐速度相差很大的设备之间数据传送的工作。

      在数据到达与离去速度不匹配的地方,就应该使用缓冲技术。缓冲技术好比是一个水库,如果上游来的水太多,下游来不及排走,水库就起到“缓冲”作用,先让水在水库中停一些时候,等下游能继续排水,再把水送往下游。

      通常CPU的速度要比I/O设备的速度快得多得多,所以可以设置缓冲区,对于从CPU来的数据,先放在缓冲区中,然后设备可以慢慢地从缓冲区中读出数据常见的缓冲技术有:单缓冲,双缓冲,循环缓冲,缓冲池。其中,目前广泛流行使用公用缓冲池。

    引入:

      在操作系统中,引入缓冲的主要原因,可归结为以下几点:

      1.改善CPU与I/O设备间速度不匹配的矛盾

      例如一个程序,它时而进行长时间的计算而没有输出,时而又阵发性把输出送到打印机。由于打印机的速度跟不上CPU,而使得CPU长时间的等待。如果设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由打印机慢慢地输出。这时,CPU不必等待,可以继续执行程序。实现了CPU与I/O设备之间的并行工作。事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们之间速度不匹配的矛盾。众所周知,通常的程序都是时而计算,时而输出的。

      2.可以减少对 CPU的中断频率,放宽对中断响应时间的限制

      如果I/O操作每传送一个字节就要产生一次中断,那么设置了n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中断次数就减少到1/n,而且中断响应的时间也可以相应的放宽。

      3.提高 CPU和 I/O设备之间的并行性

      缓冲的引入可显著提高 CPU和设备的并行操作程度,提高系统的吞吐量和设备的利用率。

      根据I/O控制方式,缓冲的实现方法有两种:

      一种是采用专用硬件缓冲器

      一种是在内存划出一个具有n个单元的专用缓冲区,以便存放输入/输出的数据。内存缓冲区又称软件缓冲。

    种类:

      根据系统设置的缓冲器的个数,可把缓冲技术分为:

      单缓冲:在设备和处理机之间设置一个缓冲器。设备相处理机交换数据时,先把被交换数据写入缓冲器,然后,需要数据的设备或处理机从缓冲器取定数据。由于缓冲器属于临界资源,即不允许多个进程同时对一个缓冲器操作,因此,尽管单缓冲能匹配设备相处理机的处理速度,但是,设备和设备之间不能通过单缓冲达到并行操作。

      双缓冲:解决两台外设、打印帆和终端之间的并行操作问题的办法是设置双缓冲。有了两个缓冲器之后,CPU可把输出到打印机的数据放入其中一个缓冲器(区)、让打印机慢慢打印;然后,它又可以从另一个为终端设置的缓冲器(区)中读取所需要的输入数据。

      多缓冲:是把多个缓冲区连接起来组成两部分,一部分专门用于输入,另一部分专门用于输出的缓冲结构。

      缓冲池:把多个缓冲区连接起来统一管理,既可用于输入又可用于输出的缓冲结构。 

    缓冲池的管理:

      对缓冲池的管理由如下几个操作组成:

      (1)从三种缓冲区队列中按一定的选取规则取出一个缓冲区的过程take_buf(type);

      (2)把缓冲区按一定的选取规则插入相应的缓冲区队列的过程add_buf(type,number);

      (3)供进程申请缓冲区用的过程get_buf(type,number);

      (4)供进程将缓冲区放入相应缓冲区队列的过程put_buf(type,work_buf)。

      其中,参数type表示缓冲队列类型,number为缓冲区号,而work_buf则表示工作缓冲区类型。

    9.以下关于死锁的叙述中,正确的是(  )。
    A.死锁的出现只与资源的分配策略有关  

    B.死锁的出现只与并发进程的执行速度有关
    C.死锁是系统的一种僵持状态,任何进程无法继续运行  

    D.进程竞争互斥资源是产生死锁的根本原因

    答案:D

    所谓死锁<DeadLock>:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程.

    产生死锁的原因主要是:

    1.因为系统资源不足。

    2.进程运行推进的顺序不合适。

    3.资源分配不当等。

    产生死锁的必要条件:

    1.互斥条件:一个资源每次只能被一个进程使用。

    2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

    3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

    4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

    处理死锁的基本方法可归结:

    预防 Prevention保守的,宁可资源闲置,效率低

    避免 Avoidance预防和检测的折中,但进程可能会长时间阻塞

    检测 Detection只要允许,就分配资源,不过发生死锁时通过剥夺解除死锁,会造成损失

    死锁排除的方法:

    1.撤消陷于死锁的全部进程;

    2.逐个撤消陷于死锁的进程,直到死锁不存在;

    3.从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。

    4.从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态

    避免死锁算法中最有代表性的算法是Dijkstra E.W于1968年提出的银行家算法

    10.请求分页存储管理中,若把页面尺寸增加一倍,在程序顺序执行时,则一般缺页中断次数会(  )。

    A.增加   

    B.减少   

    C.不变   

    D.可能增加也可能减少

     
  • 相关阅读:
    Spring boot MultipartResolver
    shell 脚本中的当前工作目录等于执行脚本时所在的工作目录
    IDEA Exception in thread "main" java.lang.ClassNotFoundException: com.streamax.servicecore.business.FileManageServApplication
    java学习路线图-----java基础学习路线图(J2SE学习路线图)
    Java基本语法-----java数组(一维数组二维数组)
    Java基本语法-----java二维数组
    Java基本语法-----java函数
    程序员的自我修养-----Java开发的必须知道的几个注意点
    JAVA面向对象-----java面向对象的六大原则
    Java集合-----java集合框架常见问题
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/14296242.html
Copyright © 2011-2022 走看看