哈工大操作系统试验1 操作系统的引导

这次实验涉及一些汇编知识,不过指导书上写的还是比较清楚的,抄一抄上面的代码,基本就ok了。

实验主要需要改3个文件

build.c           只要吧文件末尾稍微改成这样

if ((id=open(argv[3],O_RDONLY,0)) >= 0)                                        //就是打开文件的一个函数,失败的话会返回-1哦~
	{for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )
		if (write(1,buf,c)!=c)
			die("Write call failed");
	close(id);
	fprintf(stderr,"System is %d bytes.\n",i);
	if (i > SYS_SIZE*16)
		die("System is too big");}
	return(0);

build.c       原来是这样的

if ((id=open(argv[3],O_RDONLY,0))<0)
		die("Unable to open 'system'");
//	if (read(id,buf,GCC_HEADER) != GCC_HEADER)
//		die("Unable to read header of 'system'");
//	if (((long *) buf)[5] != 0)
//		die("Non-GCC header of 'system'");
	for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )
		if (write(1,buf,c)!=c)
			die("Write call failed");
	close(id);
	fprintf(stderr,"System is %d bytes.\n",i);
	if (i > SYS_SIZE*16)
		die("System is too big");
	return(0);
bootsect.s  基本不用过动,如果觉得无聊可以改一改输出的那个字符串。

msg1:
	.byte 13,10                    !这个好像是伪指令   byte和ascii是两种数据的表示方法
	.ascii "fuck..."
	.byte 13,10,13,10

主要需要改动的是setup这个文件。

首先解释一下,输出一条字符串的代码。

!print the message
 
              MOV       AX,#SETUPSEG
              MOV       ES,AX                          !赋值给ES不能直接赋值,需要用AX做中转
              MOV       AH,#0X03                       !下三行为读入光标位置
              XOR       BH,BH                           
              INT       0X10

              MOV       CX,#25                         !字符串长度,设大一点没关系~
              MOV       BX,#0X0007
              MOV       BP,#MSG2
              MOV       AX,#0X1301
              INT       0X10
ES 和 BP 分别是段寄存器和,偏移地址,把ES设#SETUPSEG是内存中存放setup.s开始的地方,BP表示存放#MSG2的偏移地

<

  • 13
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
fork是一个系统调用,用于创建一个新的进程。在哈尔滨工业大学的操作系统课程中,学生学习到了fork系统调用的使用和原理。 在操作系统中,每个进程都具有一个唯一的进程ID(PID)和一组资源。当调用fork时,当前进程会被复制,创建一个新的子进程。子进程和父进程具有相同的代码、数据和环境变量等。但是,子进程有自己的独立的内存空间。 fork调用返回两次,一次在父进程中返回子进程的PID,一次在子进程中返回0。这样,父进程可以根据返回的PID来判断fork是否成功,并根据需要进行相应的处理。 fork系统调用被广泛应用于多进程编程中。通过利用fork,可以实现并发执行,提高系统的资源利用率和效率。在操作系统课程中,学生通常学习如何使用fork创建子进程,并使用进程间通信机制进行进程间的数据交换和同步。 通过学习fork系统调用,学生可以了解进程的创建和管理,理解进程的概念和特点,并掌握进程间通信和同步的方法。此外,fork也是其他一些高级系统调用(如exec)的基础,对于学生进一步研究和学习操作系统提供了良好的基础。 总之,哈尔滨工业大学操作系统课程中的fork系统调用是学生学习并发编程和进程管理的重要内容,通过掌握这个系统调用,可以为学生提供丰富的编程经验和操作系统理论基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值