Skip to content

Latest commit

 

History

History
45 lines (34 loc) · 2.97 KB

File metadata and controls

45 lines (34 loc) · 2.97 KB

Linux面试题

1.文件描述符:

文件描述符是一个非负的索引,一般从3开始(0,1,2均被使用),指向内核中的“文件记录表”,内核为进程要使用的文件维护一个“文件记录表”。

• 进程需要打开或新建文件时,内核向进程返回一个文件描述符;
• 进程需要读写文件时,也需要将文件描述符作为参数传递给函数;
• Linux下所有对设备和文件的操作都由文件描述符完成。

2.I/O模型

  • 同步阻塞IO:在内核等待数据和将数据复制到进程地址空间的两个过程,除了等待啥也不做。及时返回数据,无延迟。
  • 同步非阻塞IO:在内核等待数据的阶段,进程可以轮询(瞅瞅它准备好数据了没),后一阶段等待。此外,在轮询之外的时间可以干其他活儿了,但是这样会拉长此进程的时延(也许人家在你轮询之前准备好了)。
  • 异步IO:异步模式时被动接收消息,如通过回调、通知、状态等方式被动获取;不是顺序执行。异步非阻塞IO中,用户进程进行系统调用后,无论内核是否准备好都会返回响应,进程可以去做别的事情,内核复制好数据之后会通知进程。
  • 信号驱动IO:建立SIGIO信号处理函数,数据准备好后进程会收到SIGIO信号。可以在信号处理函数中调用IO操作函数处理数据。
  • IO多路复用
    • 多路:多个连接,复用:一个或少量线程。即使用一个或少量的线程去处理多个连接。
    • 不停地查看多个任务的完成状态,只要有任何一个任务完成了,就去处理它。
    • 三种模式:
      • select:轮询,任何一个进程的数据准备好了就来通知一声,限制只能同时监视1024个接口;
      • poll:和select一样,不过去掉了1024的限制;
      • epoll:回调,不用去轮询了。

同步与异步:主要关注消息通信机制。

  • 同步就是在发出一个调用之后,调用没有得到结果之前该调用不返回。即同步是主动等待消息。
  • 异步调用不会等待结果而是立即返回,然后等待被调用者使用消息、通知或者回调函数来通知调用者。即异步是被动接收消息。

阻塞与非阻塞:主要关注程序在等待时的状态。

  • 阻塞是指程序在等待结果的时候被挂起,不能去完成别的任务【浪费时间】;
  • 非阻塞是指程序在等待的过程中可以做别的事情【需要切换开销】。

3. Linux常用指令:

• ls:列出文件或者目录的信息;
• cd:切换路径(绝对/相对路径);
• mkdir:新建目录;
• rmdir:删除目录,目录必须为空;
• touch:更新文件时间或新建文件;
• cp:复制文件,若源文件有两个及以上,目标路径一定要是目录;
• mv:移动文件;
• rm:删除文件;

top:在进程运行过程中对其显示方式进行控制。