笔试题(1)操作系统类——简答题

一、进程与线程

1.编程中设计并发服务器,使用多进程与多线程,有什么区别?

答:多进程:有自己的地址空间;多线程:共享地址空间。其中,进程:子进程是父进程的复制品,子进程获取父进程数据空间,堆和栈。线程:可以与同进程的其他的其他线程共享数据,但拥有自己的栈空间和独立的执行序列。

2.内核进程管理方法

答:1.在支持线程的计算系统里面,进程作为资源分配的基本单位而存在,线程作为调度的基本单位而存在。2.线程的实现:a.用户级线程,b.内核级线程,c.混合线程模型 3.Linux内核中的进程和线程都用相同的数据结构

3.Linux内核提供的能够访问用户指针的API有哪些?哪些是安全的?怎么检查安全性?

答:能够访问用户指针的API有:fork(创建一个新进程)   clone(按指定条件创建子进程) execve (运行可执行文件)  exit (中止进程) _exit  (立即中止当前进程) _usr安全

4.如何查看进程的信息(线程数)

答:a.使用top命令,具体:top -H,加上top每一行就不是显示一个进程,而是一个线程 .b.使用ps命令 ps -xh,可以查看所有存在的线程,也可以用grep进一步过虑. c.使用ps -mq pid 可以看到指定的进程产生的线程数。

5.(进程间通信)setsockopt,ioctl都可以对socket的属性进行设置,有什么不同?

答:ioctl:改变系统内核的行为;setsockopt:改变的是应用socket的行为。

6.(进程间通信)如何实现一个非阻塞的socket?

答:1.fcntl函数2.ioctlsocket函数

7.(进程间通信)Linux进程间通信的方式有哪些?以及在什么情况下用什么通信方式?优缺点?

答:a.管道(半双工,允许无缘关系子进程通信)b.信号(通知接收某个已发生事件)c.消息队列(承载信号量大,有足够权限的进程)d.共享内存(传输速度最快的通信方式)e.信号量(同步,锁机制,防止某进程正在访问共享资源时其他资源访问)d.套接字(不同机器的进程通信)

8.(进程间通信)请用普通的互斥锁编程实现一个读写锁。

9.(进程间通信)同样可以实现互斥,互斥锁和信号量有什么区别?

答:信号量:同步机制,可以当作锁,可以当作进程;互斥锁:为了锁住一些资源,是为了保护临界区。

 作用域上锁
互斥锁进程间/线程间只要上锁,其他线程不可以访问
信号量进程间信号量大于0,其他线程就可以sem_wait成功,成功后信号量减一。value不大于0,则sem_wait使用线程阻塞

10.(进程间通信)信号量与自旋锁的区别?

答:信号量:引起调用者睡眠,它把进程从运行队列拖出去,出发获得锁;自旋锁:不会引起调用者睡眠

11.pthread库提供哪两种线程同步机制,列出主要API

答:一种是mutex(互斥锁)——(pthread_mutex_init、pthread_mutex_lock、pthread_mutex_trylock、pthread_mutex_unlock);一种是condition(条件)——(pthread_cond_init、pthread_cond_signal、pthread_cond_broadcast、pthread_cond_wait)

12.怎么样解决竞态与并发?

答:通过(中断屏蔽、原子操作、自旋锁、信号量、互斥锁)。竞态:临界区互反访问,并发:多个执行单元同时并行执行

其中,并发单元的资源共享很容易导致竞态。

13.说说轮询任务调度与抢占式任务调度的区别?

答:抢占式调度可以因为优先级高的任务抢占CPU,而轮询不能,每一次把来自用户的请求轮流分配给内部中的服务器。

 

二、内存管理

1.简述Linux进程内存空间分为哪几段?分别作用是什么?

代码区:存放可执行的指令操作,只能读不能写。

全局区:存放未初始化的静态变量和全局变量。

数据区:存放初始化的静态变量和全局变量

栈:存放临时变量,函数参数

堆:存放new/malloc等动态申请的变量,用户必须手动进行delete/free操作

2.MMU是什么?功能是什么?

答:Memory Management Unit(内存管理单元) 负责的是虚拟地址,提供硬件机制的内存访问授权。

3.在8086汇编下,逻辑地址和物理地址是怎么样转换?

答:逻辑地址的段地址*16 + 逻辑地址(寄存器)的偏移量 = 物理地址

4.说一下你对内存的了解

答:内存是程序和CPU进行的沟通的桥梁,程序的运行都是在内存进行的。指针:内存即地址,内存又称主存,存放CPU的运算数据的,以及与硬盘等外部存储设备交换的数据。

5.sys文件系统的作用

答:sysfs:一种虚拟的基于内存的文件系统,作用:查看和设定内核参数功能之外,为Linux统一设备模型作为管理之用。

6.虚拟地址与逻辑地址,逻辑地址之间的关系。

答:逻辑地址(程序员看到)——(段式内存管理单元)——>虚拟地址(CPU所寻址的空间地址)——(页式内存管理单元)——>物理地址(机器内的实际内存)

其中:CPU——>MMU——>内存芯片

三、计算机网络及分布式系统

1.系统调用与库函数的区别?

答:系统调用:操作系统为用户提供一系列操作的接口,这些接口提供了对系统硬件设备功能的操作。库函数:对系统调用的一系列的一层封装。

2.什么是原子操作?LinuxC编程API哪些函数是原子性操作?

答:该操作绝不会在执行完毕前被任何其他任务或事件打断,也就是它是最小的执行单位,用于实现资源计数。

atomic_read(atomic_t *v),atomic_set(int i,atomic_t *v),atomic_add(int i,atomic_t *v)atomic_sub(int i ,atomic_t *v)

3.四层网络模型与七层网络模型(每层对应协议)

答:四层(四:应用层(FTP),三:传输层(TCP,UDP),二·:网间层(IP),一层:网络接口(ARP))

七层(七:应用层(HTTP,WWW,FTP),六:表示层(Telnet),五:会话层(SQL),四:传输层(TCP,UDP),三:网络层(IP),二层:数据链路层(ATM),一层:物理层(RS-232))

4.写出网络编程的API

答:a.Socket:建立一个socket b.Bind:用于绑定socket c.Listen:等待连接  d.accept:接受socket e.connect:建立socket连接 f.send:传送 g.recv:接收

5.构成Win32API函数的三个动态链表库是什么?

答:a.内核库,b.用户界面管理库,c.图形设备界面库

6.TCP与UDP的区别

答:TCP(传输控制协议):提供面向连接,可靠的字节流服务,即客户和服务器交换数据,必须现在双方之间建立一个TCP连接,之后才能传输数据。

UDP(用户数据报协议):一个简单面向数据报的传输层协议,传输速度快,不可靠。

四.Linux基础

1.Linux设备驱动的类型中字符设备驱动和块设备驱动的区别?

答: 共同点:操作系统的设备访问层。字符设备:按照字符流的方式被有序访问,串口,键盘。块设备:随机访问固定大小数据片的设备。硬盘

2.(内核)用户态换到内核态的三种方式?

答:a.系统调用,b.异常,c.外围设备中断

3.

 

 

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值