system -- 9




200x200


引言经过一系列的讲解,我们从启动扇区一直加载到了分段详解 32 位保护模式与内存分段机制进军保护模式利用调用门实现特权级间跳转(上) -- 原理篇利用调用门实现特权级间跳转(下) -- 实战篇&nbs

#操作系统    #os    #虚拟地址    #物理地址   

200x200


引言经过多篇文章的介绍,我们实现了从实地址模式跳转到保护模式,并在 IA-32 硬件系统中实现了代码的编写与执行进军保护模式保护模式进阶 -- 再回实模式 此前的文章中,

#操作系统    #os    #system    #特权级   

200x200


引言上一篇文章中,我们看到了如何从实地址模式进入到保护模式:进军保护模式 但是那一段简短的程序中,存在着很多不足,例如,数据直接在内存中读写,数据实际上没有被保护模式保护起来,同时,由于没

#操作系统    #os    #system    #保护模式   

200x200


引言你是否也和我一样,想要知道当我们轻轻按下电源键,电脑哔的一声响,几行字闪过,然后操作系统的启动画面出现,电脑启动可以被使用,这一系列过程中,电脑到底做了什么呢? boot -

#操作系统    #os    #system    #nasm   

200x200


文件系统布局文件系统被存放在磁盘上,磁盘一般都会被划分为一个或多个分区,每个分区中会存放一个独立的文件系统磁盘的0号扇区称为“主引导记录”(MBR),用来引导计算机,MBR的结尾是分区表,该表给出每个

#技术帖    #操作系统    #os    #linux   

200x200


概述在上一篇日志中,我们通过一个实际的例子分析了 java 程序的初始化过程和类加载顺序java 程序初始化过程 本篇日志中,我们来详细的了解一下 java&n

#技术帖    #龙潭书斋    #技术分享    #class   
问题描述开始阅读 nginx 源码的时候就一直伴随着一个问题,那就是多进程的 nginx 模型是怎么保证多个进程同时写入一个文件不发生数据交错呢?猜想中,主要有以下几种解决方案:最传统的,正在写文件的进程加锁,其他进程等待,但是这样的情况是绝对不允许的,效率太过低下写 log 前测试锁状态,如果已经锁定,则写入进程自己的缓冲区中,等待下次调用时同步缓冲区,这样做的好处是无需阻塞,提高了效率,但是就无法做到 log 的实时了,这样做工程中也是绝对无法接受的,一旦发生问题,将无法保证 log 是否已经被写入,因此很难定位一个进程专门负责写 log,其他进程通过域套接字或者管道将 log 内容发送给他,他持续阻塞在 epoll_wait 上,直到收到信息,立即写入,但是众所周知,nginx 是调用同一个函数启动所有进程的,并没有专门调用函数启动所谓的 log 进程,除了 master 和 worker,nginx 也确实没有 log 进程存在那么就是进程启动后,全部去竞争某个锁,竞争到该锁的 worker 执行 log&n
#技术帖    #linux    #unix    #socket   

200x200


图示 磁盘存储如图所示,系统由 MBR(主引导区)引导启动,载入分区表,加载 VFS,文件系统开始进入工作状态每个分区维护自己的超级块,用于描述文件系统类型等的关键参数空

#技术帖    #操作系统    #os    #龙潭书斋   
基本实现system 函数是由 fork 和 exec 函数实现的写了一个基本的实现:/* * file: system.c * author: 龙泉居士 * date: 2014-09-08 */ #include <stdio.h> #include <sys/wait.h> #include <unistd.h> int my_system(const char *cmd) { pid_t pid = fork(), son_pid; if (pid < 0) return -1; if (pid == 0) { son_pid = fork(); if (son_pid < 0 || (son_pid>0 && execl("/bin/sh", "sh", "-c", cmd, (char *)0) < 0)) return 127; } return pid; } int main() { pid_t pid = my_system("date"); printf("pid: %d\n", pid)
#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号