Linux基础知识3

吃可爱长大的小学妹 提交于 2020-02-17 14:22:51

原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6876344
原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6878477
原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6882246

Q1. 什么是临界区?什么是竞争状态?什么是同步?
A:

  1. 临界区(critical regions)就是访问和操作共享数据的代码段,多个内核任务并发访问同一个资源通常是不安全的;

  2. 如果两个内核任务可能处于同一个临界区,就是一种错误现象;如果确实发生了这种情况,就称它为竞争状态;

  3. 避免并发和防止竞争状态称为同步(synchronization)。

Q2. 简要介绍一下死锁及避免死锁的方法。

A:

死锁包括自死锁和ABBA死锁,

  1. 产生死锁有四个原因:互斥使用、不可抢占、请求和保持,以及循环等待;

  2. 避免死锁的方法有:破坏“不可剥夺”条件、破坏“请求和保持”条件、破坏“循环等待”条件。

Q3. 内核中造成并发执行的原因是什么?

A:

“并发”分为“伪并发”和“真并发”两种,内核中造成并发执行的原因有以下几种:

  1. 中断:它可能随时打断当前正在执行的代码;

  2. 内核抢占:内核中的任务可能会被另一个任务抢占;

  3. 睡眠及其与用户空间的同步:在内核执行的进程可能会睡眠,这就会唤醒调度程序,调度一个新的用户进程执行;

  4. 对称多处理:两个或多个处理器可以同时执行代码。

Q4. 给出信号量的定义,并说明down()和up()的含义。

A:

  1. Linux中的信号量是一种睡眠锁,它是1968年由Dijkstra提出的,如果一个任务试图获得一个已被持有的信号量,信号量会将其推入等待队列,然后让其睡眠;当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而可以获得这个信号量;

  2. 信号量支持两个原子操作P()和V(),前者叫做测试操作,后者叫做增加操作;后来的系统把这两种操作分别叫做down()和up();

  3. down()操作通过对信号量计数减1来请求获得一个信号量;up()操作用来释放信号量,该操作也被称作“提升”(upping)信号量,因为它会增加信号量的计数值。

Q5. Linux目录树结构是怎样的?它与Windows的目录树结构有什么区别?为什么Linux的文件系统采用固定的目录形式?
A:

文件是一个抽象的概念,它是存放一切数据或信息的仓库;

  1. Linux的目录树结构为:根目录(/)在上,其它的平行在下;

  2. Windows操作系统也是采用树型结构,但其树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,它们之间的关系式并列的;而在Linux中,无论操作系统管理几个磁盘分区,这样的目录树只有一个;

  3. 这样做的原因是:Linux是一个多用户系统,制定这样一个固定的目录规划有助于对系统文件和不同的用户文件进行统一管理;

  4. Linux中的文件类型包括:常规文件、目录文件、设备文件、管道文件和链接文件。

Q6. 什么是虚拟文件系统?什么是虚拟文件系统界面?

A:

  1. 将各种不同文件系统的操作和管理纳入到一个统一的框架中,使得用户程序可以通过同一个文件系统界面,也就是同一组系统调用,对各种不同的文件系统以及文件进行操作;用户程序可以不关心不同文件系统的实现细节,而使用系统提供的统一、抽象、虚拟的文件系统界面;这种统一的框架就是所谓的虚拟文件系统转换,一般简称虚拟文件系统(VFS);

  2. VFS的对象类型包括:超级块(superblock)对象、索引节点(inode)对象、目录项(dentry)对象和文件(file)对象;

  3. 虚拟文件系统界面是虚拟文件系统所提供的抽象界面,它主要由一组标准的、抽象的操作构成,这些函数(操作)以系统调用的形式供用户调用。

Q7. 为什么把设备分为“块设备”和“字符设备”两大类?
A:

  1. Linux将设备看成文件,具有三方面的含义:第一,每个设备都对应一个文件名,在内核中也就对应一个索引节点;第二,对文件操作的系统调用大都适用于设备文件;第三,从应用程序的角度看,设备文件的逻辑空间是一个线性空间;对于同一个具体的设备而言,文件操作和设备驱动是同一个事物的不同层次,概念上可以将一个系统划分为应用、文件系统和设备驱动三个层次;

  2. Linux将设备分为两大类,一类是像磁盘那样的以块或扇区为单位、成块进行输入/输出的设备,称为块设备;另一类是像键盘那样以字符(字节)为单位,逐个字符进行输入/输出的设备,称为字符设备;文件系统通常都建立在块设备上。

Q8. 什么是设备驱动程序?

A:

Linux中处理和管理硬件控制器的软件就是设备驱动程序。

Q9. I/O端口一般包括哪些寄存器?各自功能是什么?

A:

  1. I/O端口包括控制寄存器、状态寄存器和数据寄存器三大类;

  2. 根据访问外设寄存器的不同方式,将CPU分为两大类:一类是“内存映射”(memory-mapped)方式,另一类是“I/O映射”(I/O- mapped)方式。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!