![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 90
Shreck66
这个作者很懒,什么都没留下…
展开
-
利用ucontext.h中接口实现用户级别线程库
想必大家在初次接触多线程或多进程时一定会感觉这是多么的神奇!一个程序居然可以“同时”执行好多工作,此时你一定有一探其究竟的想法吧?可是无奈,这些都是内核中十分复杂的代码。对于初入计算机大门的我们,去看那些东西,的确有些困难。但是不用灰心,本篇博文我将为大家介绍一个由我自己实现的简单线程,代码也就100多行,程序还很简陋,但是我感觉这有助于我们对进程或线程的理解1.设计思路要实现线程,那么就先得有个简原创 2016-01-07 17:54:02 · 4448 阅读 · 7 评论 -
浅谈存储器管理
在将一个可执行代码通过某种装入方式(静态或动态)装入内存,使其变为一个动态的进程的过程中,我们的内核使用和种方法来管理该进程所要使用的内存的呢?接下来我就为大家一一道来1.早期的连续分配方式在60-70年代,那会我们的计算机计数还不发达,所以每创建一个进程,我们都得先在内存中为其分配好一块足够其使用,并前必须是连续的内存,这种方法在我们先在操作系统中当然以不在使用,但它的原始思想我觉得还是值得我们学原创 2015-12-02 22:44:21 · 1189 阅读 · 0 评论 -
栈溢出攻击的一次简单尝试
1.栈溢出的一个简单实例下面程序可能是那些接触C不久之后,可能会犯的一个数组越界导致缓冲区溢出的一个小例子#include <stdio.h>#include <unistd.h>#include <stdlib.h>void func(void){ int a = 23456; int b[2]; printf("b[2] = %d\n",b[2]); }in原创 2016-03-10 00:38:37 · 3909 阅读 · 2 评论 -
linux内核源码do_fork分析
我们都知道进程是linux内核中最为重要的一个抽象概念,那么我们平时在fork一个进程时,该进程究竟是咋么产生的呢? 本篇博文会浅谈一下在进程创建过程中扮演着重要角色的do_fork函数1.内核如何来抽象一个进程内核通过一个叫做task_struct的结构体来抽象一个进程该结构体的定义(以内核2.6为例)在include/linux.sched.h中截取部分task_struct如下task_st原创 2016-10-20 13:33:42 · 2818 阅读 · 0 评论