Linux内核
文章平均质量分 73
Gaodes
成功来自点滴的坚持
展开
-
Linux内核之系统调用
关于系统调用,我们必须清楚linux内存分为用户空间和内核空间,当我们进行程序应用时用的是用户空间,当我们要打开文件和设备的时候就会使用系统调用来访问内核空间,这时候相当中断一样,我们进入内核空间,当 处理完以后才回到用户空间。 以下分析个例子关于open的系统调用 int fd = open("abc.txt",O_CREAT); if(fd != NULL) { print...原创 2018-09-02 00:28:02 · 3264 阅读 · 1 评论 -
Linux内核之fork系统调用分析(一)
在学linux进程管理中有个fork系统调用,它是什么作用呢?我们来分析下 这是我们fork.c文件里面代码 我们执行完fork.c文件后发现多一个2 这是什么原因呢?我们进一步添加我们的代码进行分析 这是我们获取进程的代码,PID为当前进程ID,PPID为父进程ID 继续执行程序,我们发现 生成两个进程,其中一个进程是原先的进程,而且父进程不一样 分析内核:fork...原创 2018-09-04 23:54:26 · 466 阅读 · 0 评论 -
Linux内核之fork系统调用分析(二)
在此篇文章分析之前我们必须知道fork系统调用有返回值,返回值为0则是子进程,大于0为父进程。 贴上代码 通过上一篇的fork系统调用分析,我们知道fork具有拷贝功能,这段代码的作用是来分析父进程和子进程打印出来的值和地址有什么不同 我们可以看到结果是值不一样,但是地址却是一样的,值不一样是因为我们赋值了,所以拷贝的时候也变化了,但是地址还是一样,这不免让人疑惑? 内核分析:其实...原创 2018-09-05 00:43:37 · 322 阅读 · 0 评论 -
Linux内核之信号在内核表示
执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。信号在内核中的表示可以看作是这样的: sigprocmask(修改bl...原创 2018-09-12 17:30:18 · 357 阅读 · 0 评论