秋招面试常见问题--操作系统

一.操作系统

1.线程进程区别?

进程:是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。

线程:单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。

一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务。

线程是一种轻量级的进程,与进程相比,线程给操作系统带来侧创建、维护、和管理的负担要轻,意味着线程的代价或开销比较小。

线程没有地址空间,线程包含在进程的地址空间中。线程上下文只包含一个堆栈、一个寄存器、一个优先权,线程文本包含在他的进程 的文本片段中,进程拥有的所有资源都属于线程。所有的线程共享进程的内存和资源。

2.进程通信方式?

2.1 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
2.2 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
2.3 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
2.4 共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
2.5 信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
2.6 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
2.7 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

3.死锁(代码实现)?

死锁定义是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象:死锁。

代码实现

4.常用Linux命令?

4.1 cd命令

用于切换当前目录,他的参数是要切换道德目录路径,可以是绝对路径也可以是相对路径。

cd/root/Documents #切换到目录/root/Documents

cd./path          #切换到当前目录下的path目录中,“.”表示当前目录

cd../path         #切换到上层目录中的path目录中,“..”表示上层目录

4.2 ls命令

查看文件与目录的命令,list之意

4.3 grep命令

用于分析一行信息,若当中有我们所需信息则将该行显示出来。通常与管道命令一起使用。

grep[-acinv][--color-auto]'查找字符串'filename

4.4 find命令

是一个基于查找的功能非常强大的命令

find[PATH][option][action]

4.5 cp命令

用于复制文件,copy之意,还可以将多个文件一次性复制到一个目录下

4.6 mv命令

用于移动文件、目录或更名,move之意

可以将一个文件或多个文件一次移动到一个文件夹,最后一个目标文件一定要是“目录”

4.7 rm命令

用于删除文件或目录,remove之意

4.8 ps命令

用于将某个时间点的进程运行情况选取下来并输出,process之意。

4.9 kill命令

用于像某个工作或者某个PID(数字)传送一个信号,通常与ps和jobs命令一起使用。

4.10 killall 命令

改命令用于向一个命令启动的进程发送一个信号

4.11 file命令

用于判断在file命令后的文件的基本数据

4.12 tar命令

用于对文件进行打包,默认情况不会压缩,但是若指定相应参数秒晖调用相应的压缩程序进行压缩和解压。

4.13 cat命令

用于查看文本文件的内容

4.14 chgrp命令

用于改变文件所属用户组

4.15 chown命令

用于改变文件的所有者,与chgrp命令使用方法相同

4.16 chmod命令

用于改变文件的权限

4.17 vim命令

主要用于文本编辑,它接一个或多个文件名作为参数,如果文件存在就打开,如果文件不存在就以该文件名创建一个文件。

4.18 gcc命令

对于一个用Linux开发C程序的人来说,这个命令就非常重要了,它用于把C语言的源程序文件,编译成可执行程序

4.19 time命令

该命令用于测算一个命令(即程序)的执行时间

5.作业调度算法?

5.1 先来先服务:是最简单的调度算法,按作业的先后顺序进行调度。

5.2 最短作业优先算法:是对先来先服务算法的改进,其目标是减少平均周转时间。对预计执行时间短的作业优先分派处理机。通常后来的短作业不抢先正在执行的作业。
5.3 对高响应比优先算法:是对先来先服务方式和最短作业优先算法方式的一种综合平衡。先来先服务方式只考虑每个作业的等待时间而未考虑执行时间的长短,而最短作业优先算法方式只考虑执行时间而未考虑等待时间的长短。最高响应比优先法调度策略同时考虑每个作业的等待时间的长短和估计需要的执行时间长短,从中选出相应比最高的作业投入执行,响应比R定义如下: R=(W+T)/T=1+W/T

其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。

5.4 基于优先数调度算法


猜你喜欢

转载自blog.csdn.net/changengchu3961/article/details/80954037