操作系统概念
国境之南Fantasy
Coder
展开
-
内核态和用户态的区别以及内核栈
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中 执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程转载 2012-08-28 20:27:44 · 1177 阅读 · 0 评论 -
Linux0.11内核--系统中断处理程序int 0x80实现原理
系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。这个中断的设置在kernel/sched.c中441行函数中[cpp] view plain copyvoid sched_init(void) { int i; struct desc_struc转载 2016-11-16 11:42:54 · 2629 阅读 · 0 评论 -
操作系统 吃水果问题的P V 操作原语
问题描述:桌上有一个盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放橘子,儿子专等吃盘里的句子,女儿专等吃盘里的苹果。只要盘子空,爸爸妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,请给出他们四人之间的同步关系,并用PV操作实现四人正确活动的程序。 这个问题和爸爸,儿子,女儿的问题很像,只是多了一个“妈妈”。操作原语如下:Stru转载 2012-10-21 23:54:47 · 16564 阅读 · 0 评论 -
进程状态
三态模型:在多道程序系统中,进程在处理器上交替运行,状态也不断地发生变化。进程一般有3种基本状态:运行、就绪和阻塞。(1)运行(Running):当一个进程在处理机上运行时,则称该进程处于运行状态。处于此状态的进程的数目小于等于处理器的数目,对于单处理机系统,处于运行状态的进程只有一个。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。(2)就绪(R转载 2012-10-20 23:57:36 · 941 阅读 · 0 评论 -
linux内核分析笔记----系统调用
from: http://www.cnblogs.com/hanyan225/archive/2011/07/08/2100667.html 在Linux中,系统调用是用户空间访问内核的唯一手段,它们是内核唯一的合法入口。实际上,其他的像设备文件和/proc之类的方式,最终也还是要通过系统调用进行的。 一般情况下,应用程序通过应用编程接口(API)而不是直接转载 2012-09-21 10:46:38 · 701 阅读 · 0 评论 -
Linux系统调用接口、 系统调用例程 和 内核服务例程之间的关系
Linux系统调用接口、 系统调用例程 和 内核服务例程之间的关系转自:维库电子开发网 http://data.weeqoo.com/2009/2/2009217113941152763.html系统调用接口的主要任务是把进程从用户态切换到内核态。在具有保护机制的计算机系统中,用户必须通过软件中断或陷阱,才能使进程从用户态切换为内核态。在i386体系中,Linux的系统调用接口是转载 2012-09-21 10:41:59 · 1892 阅读 · 0 评论 -
软中断_硬中断 区别
from:http://topic.csdn.net/t/20031117/20/2466237.html软中断一般是指由指令int引起的“伪”中断动作——给CPU制造一个中断的假象;而硬中断则是实实在在由8259的连线触发的中断。因此,严格的讲,int与IRQ毫无关系,但二者均与中断向量有关系。int引起的中断,CPU是从指令中取得中断向量号;而IRQ引起的中断,CPU必须从数据线上转载 2012-10-09 18:15:27 · 854 阅读 · 0 评论 -
信号量与线程互斥锁的区别
from: http://hi.baidu.com/yangchye/item/995196c7b837fa48a9ba940c“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unloc转载 2012-09-29 00:31:02 · 1015 阅读 · 0 评论 -
内核态和用户态的区别
内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低。 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用转载 2012-08-28 20:22:38 · 1310 阅读 · 0 评论 -
进程内核栈、用户栈
1.进程的堆栈 内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换转载 2012-08-28 20:23:07 · 1028 阅读 · 0 评论 -
系统调用(int 0x80)详解
1、系统调用初始化在系统启动时,会在sched_init(void)函数中调用set_system_gate(0x80,&system_call),设置中断向量号0x80的中断描述符:#define set_system_gate(n,addr) _set_gate(&idt[n],15,3,addr)其中15表示此中断号对应的是陷阱门,注意,这个中断向量不是中断门描述符转载 2016-11-16 11:31:56 · 27151 阅读 · 0 评论