随笔分类 - os
学习操作系统的笔记
摘要:1.全局描述符表(Global Descriptor Table):GDT表项指向LDT。GDT对所有进程均可用。GDT记录OS使用的内存区域的段描述符。整个系统只定义一个GDT,其中存放有允许多个进程共同访问的那些段的描述符。2.局部描述符表(Local Descriptor Table):每个进程的局部空间的段的所有段描述符集中存放在一张表中,这张表为该进程的局部描述符表(LDT)。每个进程的LDT通常存放在核心空间中,系统也将它看成是一个段,因此也需要一个段描述符来给出其在内存的基址、长度等信息,这类描述符被称为LDT描述符,它们被存放在GDT中。当前正在执行的进程,其在GDT中的LDT
阅读全文
摘要:1.管道文件管道文件读写主要面临问题: 一次读写完毕后,下一次可能需要等好久。解决方法: 文件系统将这个请求挂起,不发送应答给进程,导致进程阻塞。 在能够执行完成的时候,重新唤醒进程。2.终端设备文件2.1 终端设备的i节点(inode)中有两个数字:1)主设备号 主设备号给出了设备类型: ram,软盘,硬盘,终端。2)次设备号 此设备号指明了所使用的设备号,如终端2,驱动器1, 有时候还会包含一些设备信息以便驱动程序处理。2.2 读写设备文件步骤:1)从文件的i节点中提取主、次设备号;2)去访问文件系统表,找到相应的设备驱动程序的进程号;3)若驱动程序能立即执行操作,则执行,若不...
阅读全文
摘要:1.为什么需要他因为子进程与父进程之间需要共享文件读写指针。2.构成代码:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ servers/fs/file.h++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 21700 /* This is the filp table. It is an i...
阅读全文
摘要:1.名称与功能文件锁,或称为“建议文件锁”(advisory file locking)。进程在执行可能会与其他操作冲突的操作之前,先要对文件锁进行查询,或者上锁。这个操作并不是由OS强制执行。2.实现使用文件结构 file_lock 表来记录所有的锁。 21803 EXTERN struct file_lock { 21804 short lock_type; /* F_RDLOCK or F_WRLOCK; 0 means unused slot */ 21805 pid_t lock_pid; /* pid ...
阅读全文
摘要:1.定义n = read(fd, buffer, nbytes);参数说明:fd:文件描述符buffer:存放取回数据的缓冲区?nbytes:要读取的字节数2.步骤对于调用者来说,一般是构造一条消息,包含以上三个参数,发送给系统,然后自己阻塞起来。read函数从消息中提取出fd,找到相应的filp表项以及目标文件的inode。然后将读请求分段,分段后每一次的操作都对应与一个块,即将跨块的操作分解。分解之后,检查需要读取的块是否在高速缓存中。若不在,调入之。fs(文件系统)向task(系统任务)发送一条消息,请求将数据复制到用户缓冲区中。当然复制也是分块操作的。发送应答消息给库函数,库函数再回应
阅读全文
摘要:conv2()函数根据机器类型交换大小端数据。PUBLIC unsigned conv2(norm, w)int norm; /* TRUE if no swap, FALSE for byte swap */int w; /* promotion of 16-bit word to be swapped */{/* Possibly swap a 16-bit word between 8086 and 68000 byte order. */ if (norm) return( (unsigned) w & 0xFFFF); return( ((w&BYTE) <&l
阅读全文

浙公网安备 33010602011771号