linux内核
文章平均质量分 76
xiaojialin
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Minix文件系统概述
参照《操作系统:设计与实现》,本文中的很多文字和图片来源于此书。MINIX文件系统是一个逻辑的、自包含的实体。在磁盘上它由六部分组成,分别是:引导块,超块、i-节点、i-节点位图、区段位图、数据块。具体结构如下图所示:每个文件系统都以引导块开始,引导块的最后两个字节是魔数0x55AA.引导块大小为数据块的一块,一般为512字节。启动计算机时,硬件从引导设备将磁盘的引导块读入内存,转而执行其代码,接下来引导块负责将操作系统从磁盘读入内存,并启动操作系统。超级块包含了文件系统的布局信息,它的主要功能是给出文件系原创 2011-04-28 23:29:00 · 1623 阅读 · 0 评论 -
Minix中exec的实现
参照《操作系统:设计与实现》。文章中大部分文字和图片来源于此书。书籍中以在shell命令端输入命令创建进程为例来讲解EXEC系统调用。它完成的工作如下:1.检查权限---文件是否可执行?2.读取文件头得到各段长度和总长度。3.从调用者处取参数和环境。4.分配新内存和释放旧内存。5.把堆栈复制到新的内存映像中。6.把数据(可能还有正文段)段复制到新的内存映像中。7.检查处理setuid、setgid位。8.设置进程表项。9.告诉内核进程现在是可运行的。例:在shell终端输入如下命令。ls -l f.cg.c原创 2011-04-25 22:58:00 · 1042 阅读 · 0 评论 -
Minix创建文件:creat,open操作
本文参照《操作系统:设计与实现》,文章中很多语句与图表来自此书。在POSIX中,OPEN调用可以用于创建一个新文件和截断一个老文件,因此CREAT调用实现的是OPEN的一个子集。MINIX中CREAT和OPEN的过程分别是do_creat()和do_open()来实现,这些函数位于/src/fs/open.c中。打开或创建一个文件包括三步:1)找到i-节点(创建文件时需要进行分配和初始原创 2011-06-14 15:21:00 · 1763 阅读 · 0 评论 -
Minix进程的退出
参照《操作系统:设计与实现》,有些文字出自此书。进程退出时内存管理器会调用EXIT系统调用。最终会调用mm_exit()这个函数。这个函数所作的主要工作是释放进程的内存,并将进程的子进程变成INIT的进程的子进程,成为僵死进程。主要操作的数据结构仍然为mproc[]数组表项。但当父进程在等待子进程退出时,此函数才会将表项清空。否则挂起此进程即将状态设为HANGING。等待父进程执行WAIT系统调用。WAIT系统调用最终调用do_waitpid()函数此函数和mm_exit()函数都处于/src/mm/For原创 2011-04-25 17:05:00 · 809 阅读 · 0 评论 -
Minix内存管理概述
参照《操作系统:设计与实现》第二版。内存管理有两个非常关键和基本的数据结构:进程表、空洞表。1.内存管理器的进程表叫:mproc。/src/mm/mproc.h中定义如下:EXTERN struct mproc {struct mem_map mp_seg[NR_SEGS];/* points to text, data, stack */ char mp_exitstatus; /* storage for status when process exits */ char mp_sigstatus原创 2011-04-17 23:12:00 · 1390 阅读 · 0 评论 -
Minix块高速缓存
参照《操作系统:设计与实现》文中代码与文字很多出自此书。Minix块高速缓存如下图所示:相关数据结构如下:此数据结构在/src/fs/buf.h中struct buf { /* Data portion of the buffer. */ union {/*公用体,可用来普通存储数据,目录,i节点,位图*/ char b__data[BLOCK_SIZE]; /* ordinary user data */ struct direct b__dir[NR_DIR_ENTRIES]原创 2011-05-17 22:36:00 · 749 阅读 · 0 评论 -
packet_type数据结构
struct packet_type { __be16 type; /* This is really htons(ether_type). */ struct net_device *dev; /* NULL is wildcarded here */ int (*func) (struct sk_buff原创 2009-12-12 22:36:00 · 2407 阅读 · 0 评论 -
softnet_data结构和napi_struct结构
struct softnet_data。{ struct net_device *output_queue; struct sk_buff_head input_pkt_queue; struct list_head poll_list; struct sk_buff *completion_queue; struct napi_str原创 2009-12-13 00:41:00 · 4073 阅读 · 1 评论 -
Minix中fork函数的实现
<br />参照《操作系统:设计与实现》。很多文字是从此书中直接摘抄下来的。之所以摘抄此文是为了加深自己的印象。在创建和撤销进程时必须分配或释放内存、必须更新进程表,包括由内核和FS保存的部分。进程创建是由FORK完成的。执行步骤如下: 1.检查进程表是否满了原创 2011-04-20 17:15:00 · 1185 阅读 · 0 评论
分享