程序不能脱离操作系统的原因

原创 2006年06月02日 13:20:00

操作系统起到如下两个作用:
     一、将所有的系统资源收归己有,然后视需要有条件地分配给用户进程,目的是协调诸多进程对系统资源的请求;
     二、提供任何一个用户进程都需要的功能。比如维护页表,比如磁盘IO等。这一方面是因为第一条的理由,另一方面也简化了程序的编写。所以这些程序脱离了操作系统就无法执行。

     编写“脱离”操作系统的程序主要是要完成:CPU和外设的初始化,在初始化完成之后,再设法把程序从ROM中读到主存,初始化CPU寄存器,将指令计数器(i386上是CS:IP的组合)指向程序代码的开始处,就可以开始运行了。为了方便起见,i386系列CPU可以工作在实模式,省去了处理保护模式工作的麻烦。
     整个过程系统初始化和寄存器初始化都是系统相关的,可以参考lilo和linux内核的初始化代码。
     上面说的都是系统同一时刻只运行一个进程的情况。如果有多个进程并发执行,就要写一段调度和协调的代码,这本身就是一个操作系统了。

相关文章推荐

VMWare不能安装64位操作系统原因探析

您已经配置此虚拟机使用64位客户操作系统。然而,64位操作系统不可用。此主机具有虚拟化支持能力的,但虚拟化技术被禁用。 这通常是因为虚拟化技术已经在BIOS /固件设置或禁用或主机没有权限改变此设置。...
  • whatday
  • whatday
  • 2013年03月16日 22:59
  • 27283

wince 三年之后,忍痛分析微软在移动互联网嵌入式操作系统上不能做大的原因

//--------------------------------------------------------------------------------------------------...

调用AsyncTask的excute方法不能立即执行程序的原因分析及改善方案

最近在项目中遇到一个关于调用AsyncTask的excute方法不能立即执行程序的问题,项目的targetSdkVersion是15,最后分析发现是AsyncTask的运行机制导致,特地总结出来以免后...

VC/MFC 程序最小化后不能还原的原因与解决方法

本文转自:http://blog.sina.com.cn/s/blog_4b44e1c00100mdkl.html程序最小化后不能还原,一般原因是程序中至少存在一个Popup类型的窗口引起的,因为Po...

分析驱动程序在IRQL>=DISPATCH_LEVEL时和DPC过程中不能用KeWaitForSingleObject等待对象的原因

M$ddk对调用KeWaitForSingleObject接口有下面约定: Callers of KeWaitForSingleObject must be running at IRQL ...

【代码】Android和java平台 DES加密解密互通程序及其不能互通的原因

网上的demo一搜一大堆,但是,基本上都是一知半解(包括我)。为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和java DES加密的程序不能互通。就是加密的结果不一样...

java中使用多线程不能明显提高程序效率的一些原因

java中使用多线程不能明显提高程序效率的一些原因. 使用多个线程来处理多任务的时候,效率肯定是有提高的.但是必须要慎用,否则容易出现问题. 1.多线程主要是为了充分利用多核cpu,大内存...

Android平台和java平台 DES加密解密互通程序及其不能互通的原因 .

网上的demo一搜一大堆,但是,基本上都是一知半解(包括我)。为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和java DES加密的程序不能互通。就是加密的结果不一样...

Android平台和java平台 DES加密解密互通程序及其不能互通的原因

网上的demo一搜一大堆,但是,基本上都是一知半解(包括我)。为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和java DES加密的程序不能互通。就是加密的结果不一样...

C盘太满,程序不能运行的原因

第一种情况: 工程需要用上了SQL SERVER2008 ,主要作为数据仓库使用,使用SSIS包从ORACEL10G中抽取数据到MS SQL中。环境是win2003x64的,驱动使用的oracl...
  • yucaoye
  • yucaoye
  • 2014年12月10日 15:57
  • 264
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序不能脱离操作系统的原因
举报原因:
原因补充:

(最多只允许输入30个字)