- 浏览: 543510 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (231)
- 一个操作系统的实现 (20)
- 汇编(NASM) (12)
- Linux编程 (11)
- 项目管理 (4)
- 计算机网络 (8)
- 设计模式(抽象&封装) (17)
- 数据结构和算法 (32)
- java基础 (6)
- UML细节 (2)
- C/C++ (31)
- Windows (2)
- 乱七八糟 (13)
- MyLaB (6)
- 系统程序员-成长计划 (8)
- POJ部分题目 (10)
- 数学 (6)
- 分布式 & 云计算 (2)
- python (13)
- 面试 (1)
- 链接、装载与库 (11)
- java并行编程 (3)
- 数据库 (0)
- 体系结构 (3)
- C++ template / STL (4)
- Linux环境和脚本 (6)
最新评论
-
chuanwang66:
默默水塘 写道typedef void(*Fun)(void) ...
C++虚函数表(转) -
默默水塘:
typedef void(*Fun)(void);
C++虚函数表(转) -
lishaoqingmn:
写的很好,例子简单明了,将观察者模式都表达了出来。
这里是ja ...
观察者模式——Observer
第一步——ring0 --> ring1
(汇编和C的相互调用,见P121. )
r/kernel/kernel.asm ==>
...
extern p_proc_ready ; 这里是怎么在调用的啊???
restart:
mov esp, [p_proc_ready] ; r/include/global.h有EXTERN PROCESS* p_proc_ready,r/include/有如下定义:
; typedef struct s_proc {
; STACK_FRAME regs; /* process registers saved in stack frame */
;
; u16 ldt_sel; /* gdt selector giving ldt base and limit */
; DESCRIPTOR ldts[LDT_SIZE]; /* local descriptors for code and data */
;
; int ticks; /* remained ticks */
; int priority;
;
; u32 pid; /* process id passed in from MM */
; char p_name[16]; /* name of the process */
; }PROCESS;
lldt [esp+P_LDT_SEL] ; 把“内核栈”中一个“进程表”的u16 ldt_sel的内容载入ldtr
lea eax, [esp+P_STACKTOP] ; eax被赋予esp+P_STACKTOP
mov dword [tss+TSS3_S_SP0], eax
restart_reenter:
dec dword [k_reenter]
pop gs
pop fs
pop es
pop ds
popad
add esp, 4
iretd
r/kernel/main.c ==>
#include "proto.h" // 声明了 void restart(); 因此在下面的C代码中可以直接用汇编函数restart (r/kernel/kernel.asm中)
...
PUBLIC int kernel_main(){
restart();
}
发表评论
-
(第三章 8 )特权级——保护模式的特权级检查(DPL,RPL,CPL, 一致代码段,非一致代码段)
2013-03-20 11:14 2365特权级是保护模式下一个重要的概念,CPL,RPL和 ... -
(第4章 2)突破512字节的限制
2012-09-15 11:40 2791一、代码 ... -
(第4章 1)软盘结构及其数据读取
2012-09-14 21:59 1939参考资料: http://blog.cs ... -
(第三章 12)中断
2012-09-11 20:20 1033一、中断和8259A中断控制器 1. ... -
(第三章 8 )特权级——CPL、DPL、RPL
2012-07-11 10:02 2407很久以后,等我大量翻阅关于“保护模式的特权级检 ... -
(第三章 0)保护模式如何“保护”
2012-03-14 07:59 1082IA32中“保护模式”的“保护”二字理解:(P48) ... -
(第一、二章)nasm的汇编和反汇编
2012-02-27 13:36 4974nasm的汇编和反汇编 步骤: 1. 汇编(bo ... -
(第三章 14)克勤克俭用内存——初始化页目录表、页表,开启分页机制
2011-07-22 11:30 249在启动分页机制SetupPaging之前,先调用了Di ... -
(第三章 13)克勤克俭用内存——查看内存块
2011-07-22 09:25 143[SECTION .data1] ALIGN 32 ... -
(第三章 12)克勤克俭用内存——显示字符串
2011-07-21 16:25 116DispStr调用方法: [SECTION . ... -
(第三章 11)根据自己内存情况 使用分页机制
2011-06-11 15:51 1474一、查看内存分布情况 设置“页目录表”和“页 ... -
参考博客-还有哪些人也在看这本书
2011-06-10 22:46 1364这位很详细: http://www.cnblogs.com/ ... -
(第三章 10)“代码段间跳转” 和 “访问数据段”
2011-06-10 15:40 1380下面说明代码段和数据段的访问: 一、代码段间跳转 ... -
(第三章 9)通过调用门进行有特权级变换的转移(二)
2011-06-08 11:29 191本文展示《(第三章 9)通过调用门进行有特权级变换的转移(一) ... -
(第三章 9)“调用门” 和 “利用调用门在高低特权级的转移”
2011-06-08 10:34 2685在此之前,先要熟悉汇编指令“长/短jmp”、“长/短c ... -
(第三章 7)LDT
2011-06-06 09:49 1511先展示一下效果图: 直接看代码: ... -
(第三章 6)保护模式下,读写大地址内存 & 从32位保护模式跳回16位实模式(二)
2011-06-06 09:15 1484三、关于保护模式和实 ... -
(第三章 5)保护模式下,读写大地址内存 & 从32位保护模式跳回16位实模式(一)
2011-06-05 13:53 2072一、主要功能 ... -
(第三章 3)数据段/代码段描述符
2011-06-05 11:53 2254一、宏定义和属性常量 (代码段/数据段描述符见P32;门描述 ... -
(第三章 4)A20地址线
2011-06-03 20:43 2067A20地址线困惑我了很久,这篇文章终于揭开了这个谜 ...
相关推荐
进程是操作系统中最基本的执行单元,每个进程都有自己的内存空间和系统资源。进程管理的主要任务是确保进程之间的同步和互斥,以避免资源的竞争和冲突。 二、进程同步技术 进程同步技术是指在多进程环境下,为了...
### 第四章 进程调度程序 #### 一、进程调度程序概述 进程调度程序是操作系统内核的一个关键组成部分,负责在多个可运行状态的进程间分配处理器的时间资源。它是多任务操作系统的基础,通过合理的调度策略来提高...
1. **互斥锁**:互斥锁是一种最简单的同步机制,它确保任何时候只有一个进程可以持有锁并访问共享资源。一旦某个进程获得了锁,其他所有试图获取该锁的进程都将被阻塞,直到锁被释放。 2. **信号量**:信号量是一种...
- **整型信号量**:整型信号量是最简单的信号量类型,它包含一个整数值,通过 `wait(S)` 和 `signal(S)` 原子操作来进行访问。其中 `wait(S)` 操作会在信号量值小于等于零时阻塞当前进程,直到信号量值大于零;`...
### 操作系统期中练习题第2章进程管理习题解析 #### 1. 进程与临界区 **题目解析**: 1. **题目描述**:在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区。所谓临界区是指。 - **正确答案**...
6. **使用其他工具**:除了任务管理器,还可以借助第三方工具,如Process Explorer或Process Hacker,它们提供了更详细的信息,如进程的父进程、关联的DLLs等,有助于识别系统进程。 7. **在线查询**:虽然在描述中...
6. 前后台调度:用于区分交互式进程和批处理进程,保证交互式进程的响应时间。 7. 多级反馈队列:根据进程的行为动态调整优先级,兼顾长短作业。 这些算法各有优缺点,适用于不同的操作环境和系统需求。在实际应用...
【第六章:用户与组管理】 了解Linux的用户账户体系,学习如何创建、删除和管理用户及用户组。掌握passwd、useradd、userdel、groupadd、groupmod等命令的使用,确保系统的安全性和访问控制。 【第七章:软件包...
1. 先来先服务(FCFS)调度算法:这种算法按照进程到达的顺序进行服务,是最简单的调度策略。每个进程在没有其他进程阻塞其执行的情况下,会一直运行直到完成。 2. 时间片轮转(RR)调度算法:该算法将处理机时间...
其次,先来先服务算法是最简单的调度策略,它按照进程到达系统的顺序分配CPU。在C++中,我们可以使用链表或数组来存储进程,按照它们到达的顺序进行排列。当需要调度时,从链表或数组的头部取出第一个进程进行执行。...
结束`: 这是最基本的结束进程方法,通过指定进程ID来结束目标进程。例如,`进程.结束(进程ID)`,这里的`进程ID`是需要结束的进程的唯一标识。 3. **多途径查找进程** - `进程表.获取进程`: 通过进程名称查找进程,...
2. **Process32First/Process32Next**: 这两个函数配合使用,用于从由CreateToolhelp32Snapshot创建的快照中获取第一个进程信息,以及之后的每一个进程信息。Process32First初始化遍历,返回第一个进程的结构体;...
1. **先来先服务(FCFS,First-Come, First-Served)**:这是最简单的调度策略,按照进程到达的顺序进行调度。FCFS保证了公平性,但可能导致短进程等待时间过长,影响系统效率。 2. **短作业优先(SJF,Shortest ...
1. **任务管理器**:在Windows系统中,可以通过任务管理器查看当前运行的进程,选择不熟悉的或者高资源占用的进程结束。在MacOS中,可以使用活动监视器进行类似操作。这是最直接的清理方式,适合对计算机有一定了解...
计算机网络课件-第六章-应用层 本资源是关于计算机网络的应用层的课件,主要介绍了应用层的协议和概念,包括域名系统(DNS)、文件传送协议(FTP)、远程终端协议(TELNET)、万维网(WWW)、电子邮件、动态主机...
### 操作系统第三章课后答案解析 #### 第三章 处理机调度与死锁 **1. 高级调度与低级调度的主要任务是什么?为什么要引入中级调度?** **高级调度的主要任务:** 高级调度是操作系统内核管理部分的重要功能之一,...
在本章的CPU调度练习题中,我们关注了多种调度算法及其特点。 1. 批处理作业通常需要通过作业控制语言(A)来定义其执行步骤和要求,而非程序设计语言、操作控制命令或特权指令。 2. 在调度算法中,响应比高者优先...
这一步骤是实现IPC的第一步,我们需要知道目标进程(记事本)的PID以便与其通信。 4. **发送消息**:在Windows API中,可以使用`FindWindow`函数找到指定类名或窗口标题的窗口句柄,然后用`SendMessage`或`Post...
【UNIX环境高级编程(第十四章)】章节主要讲解了UNIX系统中进程间通信(IPC,InterProcess Communication)的各种机制,这些机制允许不同进程之间高效地交换信息,超越了简单的文件共享和进程创建。以下是对各知识...