1.1-main函数执行之前的过程

从开机到main函数的执行分三步完成:(1)启动bios,在内存中加载实模式下的中断向量表和终端服务程序

                                                                       (2)从启动盘加载操作系统程序到内存

                                                                       (3)为执行32的main函数做过渡工作

这篇博客先将第一步。

我们都知道cpu只能运行内存中的程序,但是内存中得内容是断电即消失的。那么开机后,空空如也的内存

最终是怎么管理起整个硬件的呢?

第一个执行的代码肯定不是软件来加载到内存中的,只能硬件实现。Intel cpu硬件逻辑设计为在加电的瞬间

强行将cs置为0xFFFF,ip置为0x0000,这样cs:ip指向的地址就是0xFFFF0.那么这个地址指向什么呢?

恰好,这就是bios的入口地址(bios的地址范围是0xFE000~0xFFFFF),而bios是闪存芯片做的ROM,上

面是有代码的,这样就可以运行bios程序了。

bios程序短小精深(8KB),这里不深究,只说明它完成的功能。通过bios

(1)在内存的0x00000~0x003FF构建中断向量表(256项)

(2)在内存的0x00400~0x004FF构建bios数据区

(3)在内存的0xE05B(约56KB)处开始加载8k左右的中断服务程序

 

这些代码就是操作系统打下江山的资本啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,针对您的问题,您可以使用System.Threading.Thread类的Start方法来启动多线程,并通过ThreadStart委托来指定要执行的方法。如果您需要向该方法传递参数,您可以使用ParameterizedThreadStart委托来代替ThreadStart委托,并将参数作为Object类型的数组传递。 以下是一个使用ParameterizedThreadStart委托并传递参数的示例代码: ``` using System.Threading; class Program { static void Main(string[] args) { // 创建线程并传递参数 Thread newThread = new Thread(new ParameterizedThreadStart(DoWork)); newThread.Start("Hello World"); } static void DoWork(object data) { // 获取传递的参数 string message = (string)data; // 在这里编写您要执行的多线程方法的代码 } } ``` 希望对您有所帮助。 ### 回答2: 在.NET Framework 1.1中,可以使用Thread类来实现多线程执行带参数的方法。 首先,创建一个ThreadStart委托,并将要执行的方法作为参数传递给ThreadStart的构造函数。该方法可以带有参数,例如: ```csharp public class MyClass { public void MyMethod(string param) { Console.WriteLine("执行带参数的方法,参数值为:" + param); } } ``` 接下来,创建一个Thread对象,并使用ThreadStart委托来初始化该对象。传入的方法名字必须是不带参数的方法名,即不包含任何参数: ```csharp MyClass myObject = new MyClass(); ThreadStart threadStart = new ThreadStart(myObject.MyMethod); Thread thread = new Thread(threadStart); ``` 要执行带参数的方法,可以使用ParameterizedThreadStart委托。ParameterizedThreadStart委托接受一个参数,从而允许传递参数给该方法: ```csharp public class MyClass { public void MyMethod(object param) { string parameter = (string)param; Console.WriteLine("执行带参数的方法,参数值为:" + parameter); } } ``` 然后,创建一个Thread对象,并使用ParameterizedThreadStart委托来初始化该对象。传入的方法名字必须是不带参数的方法名,即不包含任何参数。 ```csharp MyClass myObject = new MyClass(); ParameterizedThreadStart parameterizedThreadStart = new ParameterizedThreadStart(myObject.MyMethod); Thread thread = new Thread(parameterizedThreadStart); ``` 最后,可以使用Start方法启动线程,并传递参数: ```csharp thread.Start("参数值"); ``` 通过以上步骤,就可以在.NET Framework 1.1中实现多线程执行带参数的方法。 ### 回答3: 在.NET Framework 1.1中,可以使用Thread类的实例来实现多线程执行带参数的方法。下面是一个简单的示例: 首先,定义一个带参数的方法,例如以下的add方法: ``` static void Add(object param) { int num = (int)param; int result = num + 1; Console.WriteLine("加1后的结果是:" + result); } ``` 然后,在主线程中创建并启动新的线程,将参数传递给add方法: ``` int param = 10; Thread thread = new Thread(new ParameterizedThreadStart(Add)); thread.Start(param); ``` 在上述示例中,我们首先创建了一个int类型的参数param,将它的值设为10。然后,我们通过Thread类的构造函数创建一个新的线程,并将Add方法作为参数传递给它。注意,我们使用了ParameterizedThreadStart委托,它可以接收一个参数。最后,我们通过调用thread的Start方法启动新线程,并将param传递给它。 当新线程开始执行时,带参数的Add方法会被调用,并将传递的参数强制转换为int类型的变量num。在这个例子中,num的值为10。接下来,将num加1,并将结果打印到控制台。 这样,我们就实现了在.NET Framework 1.1中多线程执行带参数的方法。请注意,这只是一个简单的示例,真实的应用可能会涉及更复杂的逻辑和多个参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值