kernel
文章平均质量分 65
nodeathphoenix
这个作者很懒,什么都没留下…
展开
-
Linux 1.0 head.S 学习日记
/* * linux/boot/head.S * * Copyright (C) 1991, 1992 Linus Torvalds *//* * head.S contains the 32-bit startup code. */.text.globl _idt,_gdt,.globl _swapper_pg_dir,_pg0.glo原创 2013-06-14 18:04:42 · 1642 阅读 · 0 评论 -
Linux操作系统学习_用户进程之由新进程创建到可执行程序的加载
fork()函数大家应该都不陌生,一个现有进程可以调用fork函数来创建一个新进程,由fork()创建的新进程通常被称为子进程。fork()函数被调用一次,但返回两次,两次返回的区别在于,子进程的返回值为0,父进程返回值为子进程的PID值。但是,就是这大家都非常熟悉的一个函数,在你调用fork进行新进程创建的过程中,操作系统到底做了哪些工作,具体的工作过程又是什么,不知道又有多少人清楚的知道。下面转载 2014-09-15 14:33:45 · 2917 阅读 · 0 评论 -
硬盘分区表知识——详解硬盘MBR
硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都以文件的形式存储在硬盘里。不过,计算机可不像人那么聪明。在读取相应的文件时,你必须要给出相应的规则。这就是分区概念。 分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即MasterBootRecord,一般简称转载 2014-08-05 22:29:16 · 910 阅读 · 0 评论 -
Linux 进程切换 0.11与2.4的比较
0.11的进程模型与2.4不同。0.11中每个进程都有一个tss结构,用于保存/恢复进程切换时的现场(主要都是一些寄存器);而2.4中每个cpu使用一个tss结构,多个进程将共用一个tss。因此,0.11的进程切换使用了CPU的硬件特性;而2.4的切换则是一种软切换,从CPU的角度来看,实际上没有进程切换,只不过是修改了若干寄存器而已。看进程切换的代码必须注意一点:内核空间和用户空间。转载 2014-09-14 15:44:09 · 1172 阅读 · 0 评论 -
进程切换与TSS
[转] http://www.eefocus.com/article/09-06/74895s.html Intel i386 体系结构包括了一个特殊的段类型,叫任务状态段(TSS),如图5.4所示。每个任务包含有它自己最小长度为104字节的TSS段,在/include/ i386/processor.h 中定义为tss_struct结构:struct tss_st转载 2014-09-14 15:12:35 · 8440 阅读 · 0 评论 -
磁盘分区
硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区 + 扩展分区总共不能超过4个。逻辑分区可以有若干个。 分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们原创 2014-08-05 17:02:30 · 655 阅读 · 0 评论 -
磁盘分区类型
NOTE: All Partition Type values listed below are inHexadecimal.Remember:Partition types do *not* necessarily specify a specific file system; e.g.,07h is used by both OS/2's HPFS and Windows NT翻译 2014-08-06 10:39:04 · 2338 阅读 · 0 评论 -
U盘启动自己的操作系统
学习 >原创 2014-08-20 23:52:59 · 860 阅读 · 0 评论 -
Ubuntu 14.04.1 LTS上编译安装新的kernel
先cd到欲编译的kernel source code的根目录linux-3.15.8,然后copy当前ubuntu系统中的内核配置为新的kernel的内核配置 cp /boot/config-3.13.0-32-generic ./.config sudo make oldconfig sudo make -----不加任何参数直接make,原创 2014-08-04 07:16:59 · 12195 阅读 · 0 评论 -
实模式和保护模式
实模式:(即实地址访问模式)它是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式。实模式被特殊定义为20位地址内存可访问空间上,这就意味着它的容量是2的20次幂(1M)的可访问内存空间(物理内存和BIOS-ROM),软件可通过这些地址直接访问BIOS程序和外围硬件。实模式下处理器没有硬件级的内存保护概念和多道任务的工作模式。但是为了向转载 2013-05-02 14:18:37 · 793 阅读 · 0 评论 -
Linux1.0 kernel bootsect.S 学习日记
参考:http://www.chinaunix.net/old_jh/4/130640.htmlhttp://www.doc88.com/p-587672394556.htmlhttp://zhidao.baidu.com/question/102135062.htmlhttp://www.doc88.com/p-032414683132.html!!原创 2013-06-04 11:41:31 · 1311 阅读 · 0 评论 -
段机制及Linux的实现
段是虚拟地址空间的基本单位,段机制必须把虚拟地址空间的一个地址转换为线性地址空间的一个线性地址。 一、段机制为了实现这种映射,仅仅用段寄存器来确定一个基地址是不够的,至少还得描述段的长度,并且还需要段的一些其他信息,比如访问权之类。所以,这里需要的是一个数据结构,这个结构包括三个方面的内容:(1) 段的基地址(Base Address):在线性地址空间中段的起始地址。转载 2013-06-06 16:16:47 · 1584 阅读 · 0 评论 -
选择子的含义
GDT表中的下表是从0算起的,也就是说选择子中的表示描述符在GDT表中的index是从0值开始的,0表示GDT表中的第一个描述符。原创 2013-06-14 18:08:25 · 1549 阅读 · 0 评论 -
CPL和权限
将当前特权级CPL(存放在cs寄存器的低两位) CS里是放的选择子,每个选择子的0和1位就是RPL。选择子放入到CS后,0和1位就是RPL,也即是当前进程的CPL。 如前所述,CPU的当前特权级(CPL)反映了进程是在用户态还是内核态,并由存放在cs寄存器中的段选择符的RPL字段指定。只要当前特权级被改变,一些段寄存器必须相应地更新(如ds和ss寄存器)。例如,当CPL=3时转载 2013-10-23 14:22:29 · 2003 阅读 · 0 评论 -
Linux 1.0 memory.c 学习日记
/* * linux/mm/memory.c * * Copyright (C) 1991, 1992 Linus Torvalds *//* * demand-loading started 01.12.91 - seems it is high on the list of * things wanted, and it should be easy to原创 2013-07-03 20:36:25 · 1484 阅读 · 0 评论 -
Linux 1.0 Setup.S 学习日记
!! setup.S Copyright (C) 1991, 1992 Linus Torvalds!! setup.s is responsible for getting the system data from the BIOS,! and putting them into the appropriate places in system memory.原创 2013-06-06 16:21:09 · 1526 阅读 · 0 评论 -
Linux kernel bootsect
本文的目的,在于将linuxkernel的boot部分做一个介绍,因为笔者觉得很少有这样的文章来介绍一个操作系统最最开始的一步----把kernel本身载入至内存中,同时进行一些 机器相关(machinedependent)的初始化工作,由于linux刚好使用的是大家最熟悉的386,486系列PC,所以在说明其程序流程时,也刚好可以对其相关的PC硬体架构做探讨,可以说是一举两得。不过,我必须假设读转载 2013-05-31 14:29:45 · 913 阅读 · 0 评论 -
16位和32位代码段
在对ix86编程时,有时候需要从实模式变换到保护模式(如在DOS时代要访问扩展内存,或者编写引导代码,当然,如果在32位的操作系统下面编程,是碰不到这个问题的),总是要涉及16位代码段和32位代码之间的跳转问题。因此有必要对他们进行区分。16位代码段和32位代码段的主要区别是,在16位代码段中,跳转目标的偏移用16位表示,而在32位代码段中,跳转目标的偏移用32位表示。在实模式下,CPU总转载 2014-09-03 11:22:32 · 4147 阅读 · 0 评论