[面试] 5. 操作系统相关

本文章收录于:后端工程师面试题目总结(提供参考答案)

目录

1. 进程与线程的区别?(资源、调度、开销、通信 4个方面对比)

2. 进程间通信(python如何实现的)

3. 线程间通信

4. Linux常用的监控资源使用率的命令?(top,free)

5. Linux其他常用命令

6. 了解协程么,轻量体现在哪儿?

7. 结合OSI七层模型解释一下数据从一台计算机到另一台计算机的过程?

8.  描述一下Socket?


1. 进程与线程的区别?(资源、调度、开销、通信 4个方面对比)


    进程的解释:是程序执行的一个实例,操作系统进行资源分配和调度的基本单位。
    线程的解释:是CPU调度和分配的基本单位,程序执行的最小单位。
    它们的联系:
        一个进程由至少一个线程构成,所有线程共享所属进程的全局变量和代码;线程崩溃会导致所属进程崩溃。
    从几个方面来说区别:

  •     1. 资源:

        进程占用的资源是系统分配,线程直接使用进程的资源(包括内存、cpu等)。

  •     2. 调度:

        进程是由操作系统调度,线程由CPU调度。

  •     3. 开销:

        由于进程有独立的地址空间,而线程是共享进程的堆,拥有独立的栈(用于保存局部变量和临时变量)、寄存器; 
        所以进程创建、切换、销毁的开销自然大于线程。
        寄存器:包括指令寄存器和程序计数器,用来保存指令、数据和地址。
        程序计数器:它存储的是当前正在执行的指令的地址,当每个指令被获取时,存储地址加一,加一后就指向了下一条
        指令,当计算机重启或复位时,计数器会置零。(因为计算机都是预存储一部分待执行指令,然后自动执行,这样会更快,而
        下一此从内存中取指令时该取哪一条呢?这就需要程序计数器了)

  •     4. 通信:

        进程间通信方式(InnerProcess Com=IPC):
            管道:比较原始UNIX系统的IPC方式,半双工,只用于具有亲缘关系的进程间通信。
            FIFO:命名管道,通过对同一个文件对象的读写来通信,允许用于任意两个进程间的通信。
            消息队列:用于保存消息的容器对象,通常存在于nosql中,独立于进程而存在。
            信号量:与上面的几种方式不同,它是一个计数器,用于实现进程间的互斥和同步,不存储数据,通常结合
                    共享内存使用。
            共享内存:指两个或多个进程共享同一块内存空间。

2. 进程间通信(python如何实现的


3. 线程间通信


    python的多线程通信有多种方式(参考这里):
        3.1 全局变量(通信)
        3.2 内置queue(通信)
        3.3 threading.Event(同步)
        3.4 threading.Semaphore(同步)
        3.5 threading.Lock/RLock(同步)
        3.6 threading.Condition(同步)

4. Linux常用的监控资源使用率的命令?(top,free)


    top: 查看当前系统信息(系统运行时间/当前登陆用户数/负载/进程数/内存消耗)
        以及资源消耗较高的进程
    free: 内存总量及消耗

 

5. Linux其他常用命令


    find / -name xxx.* 在根目录下搜索名字前缀为xxx的文件或目录
    init 0或poweroff或halt 关闭系统
    shutdown -h hours:minutes & 按预定时间关闭系统
    rmdir dir1 删除dir1目录
    df -h  查看已经挂载的分区
    du -sh dir1或file或* 查看指定目录/文件/所有对象的大小
    chmod ugo+x test.py 修改文件的权限(u:当前用户,g:所属组, o:其他组,用等号就是重新分配权限)
    chmod =r test.py 重置所有用户的权限为只读
    rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1' 
    rar x file1.rar 解压rar包 

6. 了解协程么,轻量体现在哪儿?


    协程又称微线程,和线程不一样,线程的切换由CPU控制,
    有上下文切换的开销,一旦线程数量增加到一定数量,多线程带来的切换开销反而会导致系统的性能降低。
    协程的切换由程序也就是开发者控制,多个协程会在运行在同一个线程中,不会有上下文开销,理论上来说,
    协程数量越多,系统性能越高。
    协程共享线程的栈资源(变量)。

7. 结合OSI七层模型解释一下数据从一台计算机到另一台计算机的过程?

     

这是OSI模型图,那数据从A机到B机的流向自然是,A机应用层->...->A机物理层-->【通过网络传输】-->B机物理层->...->B机应用层,下面说说具体过程。

A机上:

         应用层:最靠近用户的一层,为计算机提供接口,也就是各种网络服务。常见的网络协议有HTTP/HTTPS/FTP/SMTP等;比如现在使用的HTTP服务。假设A机按照HTTP协议规定的格式对数据进行封装,保证到达对方应用层时能够正常解析。然后将数据交给下一层。

         表示层:对数据进行编/解码、(解)压缩以及加解密。这里A机是将数据进行字符编码(utf-8/gbk等,两端协商好同一种编码),以及数据的压缩方便快速传送,以及必要情况下的加密(这个由用户控制)。然后将数据交给会话层。

         会话层:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。会话层按照应用层协议与对端建立单工/半双工/全双工的会话。A机要给B机发数据,肯定已经知道B机的网络地址,可以是域名/IP/主机名,然后将数据和B机网络地址交给传输层去执行具体的连接建立过程。

         传输层:接收到编码好的数据以及对方的网络地址后,根据应用层协议决定采用哪种传输层协议规定的报文格式再次封装数据,并将自己应用层协议和对端层占有的端口添加到报文头部。HTTP协议是基于TCP协议的,那么A机将按照TCP协议的报文格式再次封装数据报文,然后将源端口80和目标端口80添加到报文头部(端口默认),如果网络地址是域名或主机名不是IP,那么 计算机还会通过本地hosts文件->本地DNS缓存->根域名服务器的方式获取到真实IP,再将IP信息交给网络层去建立具体的连接通道。

         网络层:也叫IP层,这一层根据具体网络层协议决定了路由寻址方式。它将IP信息写入数据包(位于IP头部),这一层还负责通信的建立,维持和断开,为上层提供一条透明的数据传输通道,是关键的一层。有了B机的IP地址,网络层将通过路由的形式将IP数据包转发出去。然后来到数据链路层

         数据链路层:到这一层时,只有IP头部+TCP数据包。计算机必须将数据包封装成帧,帧由标头和数据两部分构成。标头包含发送者和接收者的网卡MAC地址,这一层是通过MAC地址来在设备之间发送数据的。这个时候接收者就不是服务器的MAC了,而是计算机即将发送到的下一台设备的MAC地址,这样一个一个的将数据包发出去。下一台设备的网卡MAC地址是通过ARP协议获取到的。所以A机上就有其连接的下一台设备(可能是路由器/交换机)的网卡MAC,然后将封装好的数据帧交给物理层。 数据链路层还提供了差错控制和流量控制,在一条可能出差错的物理链路上几乎无差错的传输数据。反向:从物理层接收到电信号后,按照规定的分组方式将电信号进行分组得到多个数据包,多个数据包构成数据帧,去掉帧的头部,将IP数据包交给网络层。

         物理层:负责传输0和1二进制比特流。接收到帧后,将帧拆解为比特流数据,然后通过物理传输介质将信号发出去。

B机上就是以上流程的反向操作。

8.  描述一下Socket?

   Socket书面称作“套接字”。 实则就是用来描述地址+端口的一个句柄,有了这个句柄,进程就有了通信的能力(Socket为进程提供通信能力);每个进程都有一个唯一的Socket句柄。

   一个Socket有一个本地唯一的Socket号,由OS分配。

   Socket本质上是编程接口,对TCP/IP的封装。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值