2025年进程控制块的组织方式有哪几种?(进程控制块的组织方式有哪几种)

进程控制块的组织方式有哪几种?(进程控制块的组织方式有哪几种)p 第一章概述 p p 1 什么是 POSIX 标准 为什么现代造作系统的设计必须遵循 POSIX 标准 p p 答 POSIX 表示可移植操作系统接口 Portable Operating System Interface p p POSIX 是在 Unix 标准化过程中出现的产物 p

大家好,我是讯享网,很高兴认识大家。



 <p>第一章概述</p><p>1、什么是POSIX标准,为什么现代造作系统的设计必须遵循POSIX标准?</p><p>答:POSIX表示可移植操作系统接口(Portable Operating System Interface)。</p><p>POSIX是在Unix标准化过程中出现的产物。</p><p>POSIX 1003.1标准定义了一个最小的Unix操作系统接口。</p><p>任何操作系统只有符合这一标准,才有可能运行Unix程序。</p><p>2、什么是GNU?Linux与GNU有什么关系?</p><p>答:GNU是GNU Is Not Unix的递归缩写,是自由软件基金会的一个项目。</p><p>GNU项目产品包括emacs编辑器、著名的GNU C和Gcc编译器等,这些软件叫做GNU 软件。</p><p>GNU软件和派生工作均适用GNU通用公共许可证,即GPL(General Public License)。</p><p>Linux的开发使用了众多的GUN工具。</p><p>3、Linux系统由哪些部分组成?Linux内核处于什么位置?</p><p>答:(1)符合POSIX标准的操作系统内核、Shell和外围工具。(2)C语言编译器和其他开发工具及函数库。(3)X Window窗口系统。(4)各种应用软件,包括字处理软件、图象处理软件等。</p><p>Linux内核是所有Linux 发布版本的核心。</p><p>第二章内存寻址</p><p>1、在80x86的寄存器中,哪些寄存器供一般用户使用?哪些寄存器只能**作系统使用?答:通用寄存器EAX,EBX,ECX,EDX,EBP(基址指针),ESP(堆栈指针),ESI(扩展源指针),EDI(扩展目的指针),还有EFLAGS(标志寄存器).</p><p>专供操作系统使用的寄存器:IDTR中断描述符寄存器,GDTR全局描述符表寄存器,LDTR 局部描述符表寄存器,TaskRegisters任务寄存器,DebugRegister调试寄存器,ControlRegister 控制寄存器,Model-SpecificRegisters模型专用寄存器。</p><p>3、请用C语言描述段描述符表。</p><p>答:#include <stdio.h></p><p>#include <stdlib.h></p><p>#define BASE_H 0xff00</p><p>#define BASE_M 0x00ff</p><p>#define BASE_L 0xffff</p><p>#define LIMIT_H 0x000f</p><p>#define LIMIT_L 0xffff</p><p>#define GRANULARITY 0x0080</p><p>#define SEGMENT_P 0x8000</p><p>#define SYSTEM_TYPE 0x1000</p><p>#define DPL 0x6000</p><p>#define TYPE_E 0x0800</p><p>#define TYPE_ED_C 0x0400</p><p>#define TYPE_RW 0x0200</p><p>#define TYPE_A 0x0100</p><p>struct {</p><p>unsigned char base_high;</p><p>unsigned char g : 1;</p><p>unsigned char other : 3;</p><p>unsigned char limit_high : 4;</p><p>unsigned char P : 1;</p><p>unsigned char dpl : 2;</p><p>unsigned char S : 1;</p><p>unsigned char E : 1;</p><p>unsigned char ED_C : 1;</p><p>unsigned char RW : 1;</p><p>unsigned char A : 1;</p><p>unsigned char base_middle;</p><p>unsigned short base_low;</p><p>unsigned short limit_low;</p><p>} gdt_t;</p><p>int main(int argc, char *argv[])</p><p>{</p><p>// int gdt[4] = {0x0fff, 0x0000, 0x9a00, 0x00c0} ; // 0x08</p><p>// int gdt[4] = {0x7fff, 0x0000, 0x9a01, 0x00c0} ; // 0x10</p><p>// int gdt[4] = {0x0002, 0x8000, 0x920b, 0x00c0} ; // display memory</p><p>// int gdt[4] = {0xffff, 0xffff, 0xffff, 0xffff} ; // test</p><p>int gdt[4] = {0x03ff, 0x0000, 0xf201, 0x00c0} ; // ldt0 unsigned int base, limit;</p><p>unsigned int granularity;</p><p>unsigned int present, dpl, system_type, segment_type; unsigned int type_e, type_ed_c, type_rw, type_a;</p><p>base = (gdt[3] & BASE_H) << 16;</p><p>base += (gdt[2] & BASE_M) << 16;</p><p>base += gdt[1] & BASE_L << 0;</p><p>limit = (gdt[0] & LIMIT_L) << 0;</p><p>limit += (gdt[3] & LIMIT_H) << 16;</p><p>granularity = (gdt[3] & GRANULARITY) >> 7;</p><p>present = (gdt[2] & SEGMENT_P) >> 15;</p><p>dpl = (gdt[2] & DPL) >> 13;</p><p>system_type = (gdt[2] & SYSTEM_TYPE) >> 12;</p><p>type_e = (gdt[2] & TYPE_E) >> 11;</p><p>type_ed_c = (gdt[2] & TYPE_ED_C) >> 10;</p><p>type_rw = (gdt[2] & TYPE_RW) >> 9;</p><p>type_a = (gdt[2] & TYPE_A) >> 8;</p><p>printf("base 0x%x %d 

讯享网

”, base, base);

printf(“limit 0x%x %d “, limit, limit);

printf(” “);

printf(“G %d (0=bype, 1=4KB) “, granularity);

printf(” “);


讯享网

printf(“P %d “, present);

printf(“DPL %d “, dpl);

printf(“S %d (0=system, 1=code or data) “, system_type); printf(“TYPE_E %x “, type_e);

printf(“TYPE_ED_C %x “, type_ed_c);

printf(“TYPE_RW %x “, type_rw);

小讯
上一篇 2025-06-05 12:13
下一篇 2025-05-10 15:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/179729.html