Linux内核分析与应用

本系列是对 陈莉君 老师 Linux 内核分析与应用 的学习与记录。讲的非常之好,推荐观看

留此记录,蜻蜓点水,可作抛砖引玉


1.概述

用到的几个命令:

insmod

dmesg lsmod

章节测试:

部分可参考

<1>. Linux得以流行,是因为遵循了GPL协议,并不是因为遵循POSIX标准 (错)

linux操作系统概述

linux概述

<2>. 从Linux操作系统的整体结构来看,分两大部分,用户空间的应用程序和内核空间的os内核,二者之间是一种c/s结构,os是服务者,应用程序是客户,是一种请求和响应的关系。 (对)

Linux用户空间与内核空间

阮一峰-User space 与 Kernel space

<3>.Linux内核提供机制而不是策略,系统调用是一种策略 (错)

关于Unix/Linux的设计有一句通用的格言"提供机制而不是策略"。换句话说,系统调用抽象出了用于完成某种确定目的的函数。至干这些函数怎么用完全不需要内核去关心。区别对待机制(mechanism)和策略(policy)是Unix/Linux设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:"需要提供什么功能"(机制)和"怎样实现这些功能"(策略)。

<4>.内核源码中的双向链表和哈希表都相当于内核源码中的基本类型,对其操作只需要调用内核提供的相应API就可以。 (对)

Linux内核中对双向链表的使用,简直和int型一样频繁

<5>.Linux内核把双链表作为基本类型存放于types.h文件中,是为了隐藏双链表的指针特性。 (对)

Linux双向链表的定义主要涉及到两个文件:

Linux内核中双向链表的经典实现

<6>. list.h中的list_entry()宏通过一个结构体中字段的地址可以求出该结构体的地址,从而可以访问结构体的其他成员,是一种逆向思维。 (对)

Linux内核中的list_head结构体以及list_entry宏

<7>.Linux内核是单内核结构,执行效率高,可维护性好 (错)

微内核效率不如单内核,但可维护性要好。minix,qnx,l4,还有谷歌刚推出的fuchsia,均为微内核。linux大多数为单内核

<8>.内核文档中www.kernel.org/doc/html/la... 只包含各个子系统的文档 (错)

<9>.可加装的内核模块在内核运行时候可加载和卸载,是开发一个新的文件系统,驱动程序的基本机制。 (对)

<10>.内核模块的修饰符__init可加可不加,对模块的运行没有什么影响 (错)

linux kernel __init和__exit宏的作用

Linux开发实战指南文档(这篇不错)

<11>.编写Linux内核模块时,不需要单独写一个Makefile文件,直接编译就可以 (错)

<12>.Linux内核模块运行在用户空间 (错)

<13>. 微内核比单内核的效率高 (错)

<14>. Linux内核模块的插入和运行必须用root权限 (对)

<15>. Linux的内核模块不属于Linux的几个子系统 (对)

<16>.Linux在超级计算机,可穿戴设备,嵌入式系统,移动终端,桌面等系统上都可以运行。 (对)

<17>. Linux内核、GNU工具以及其他一些自由软件组成了人们常熟的Linux系统或者Linux发布版。 (对)

<18>. lisit_entry(ptr,type,member)宏返回的是member的地址 (错)

Linux内核双链表语句list_entry(ptr, type, member)理解\]([ilinuxkernel.com/?p=1062](https://link.juejin.cn?target=http%3A%2F%2Filinuxkernel.com%2F%3Fp%3D1062 "http://ilinuxkernel.com/?p=1062") "Linux内核双链表语句list_entry(ptr, type, member "Linux内核双链表语句list_entry(ptr, type, member)理解")理解") \<19\>.list_for_each_saft()宏和list_for_each()宏功能一样,安全性有差异 (对) \<20\>. 与体系结构(如x86,ARM等)相关的代码存放在[arch目录](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Ftorvalds%2Flinux%2Ftree%2Fmaster%2Farch "https://github.com/torvalds/linux/tree/master/arch")下 (对) \<21\>. 创建进程属于一种策略而不是机制 (错) \<22\>. ( )不属于Linux的子系统 D * A.进程管理 * B.内存管理 * C.文件系统 * D.模块 \<23\>.Linux操作系统遵循( )标准 C * A.GUN * B.GPL * C.POSIX * D.MMU \<24\>.触摸屏属于( )管理 B * A.应用程序 * B.操作系统 * C.硬件厂家 * D.系统调用 \<25\>.如果要从磁盘读取一个文件,则主要与( )子系统打交道 C * A.内存管理 * B.进程调度 * C.文件系统 * D.网络 \<26\>. struct list_head 无法表达( )种数据结构 D * A.队和栈 * B.图 * C.树 * D.集合 [深入理解linux内核list_head的实现](https://link.juejin.cn?target=http%3A%2F%2Fblog.chinaunix.net%2Fuid-27122224-id-3277511.html "http://blog.chinaunix.net/uid-27122224-id-3277511.html") \<27\>. 谷歌的Fuchsia操作系统属于( )结构 A * A.微内核 * B.单内核 * C.C/S * D.面向对象

相关推荐
why1511 小时前
腾讯(QQ浏览器)后端开发
开发语言·后端·golang
浪裡遊1 小时前
跨域问题(Cross-Origin Problem)
linux·前端·vue.js·后端·https·sprint
声声codeGrandMaster1 小时前
django之优化分页功能(利用参数共存及封装来实现)
数据库·后端·python·django
Johny_Zhao1 小时前
OpenStack 全套搭建部署指南(基于 Kolla-Ansible)
linux·python·信息安全·云计算·openstack·shell·yum源·系统运维
2401_867021901 小时前
文件缓冲区(IO与文件 ·III)(linux/C)
linux·运维·服务器·c语言
刘某的Cloud2 小时前
rabbitmq常用命令
linux·运维·分布式·rabbitmq·系统
呼Lu噜2 小时前
WPF-遵循MVVM框架创建图表的显示【保姆级】
前端·后端·wpf
bing_1582 小时前
为什么选择 Spring Boot? 它是如何简化单个微服务的创建、配置和部署的?
spring boot·后端·微服务
学c真好玩2 小时前
Django创建的应用目录详细解释以及如何操作数据库自动创建表
后端·python·django
Asthenia04122 小时前
GenericObjectPool——重用你的对象
后端