MIT6.S081 Lec01

简介

MIT6.S081这门课程的标题是Operating System Engineering。主要讲的就是操作系统。

课程是基于一个类似于Unix但是简单的多的教学操作系统XV6来讲解,虽然不是原汁原味的Linux,但是对于理解Linux的工作方式和结构是足够了。

操作系统的共同目标

  • 抽象硬件。
  • 在多个应用程序之间共用硬件资源
  • 隔离性。
  • 实现共享
  • security
  • 帮助应用程序获得高性能
  • 支持大量不同类型的应用程序

操作系统的结构

用户空间。区别于用户空间程序,有一个特殊的程序总是会在运行,它称为Kernel。Kernel是计算机资源的守护者。当你打开计算机时,Kernel总是第一个被启动。Kernel程序只有一个,它维护数据来管理每一个用户空间进程。Kernel同时还维护了大量的数据结构来帮助它管理各种各样的硬件资源,以供用户空间的程序使用。Kernel同时还有大量内置的服务。
关注点:Kernel、连接Kernal和用户空间程序的接口、Kernel内软件的架构。

  • 文件系统
    文件系统的作用是管理文件内容并找出文件具体在磁盘中的哪个位置。文件系统还维护了一个独立的命名空间,其中每个文件都有文件名,并且命名空间中有一个层级的目录,每个目录包含了一些文件。所有这些都被文件系统所管理。
  • 进程管理系统
    每一个用户空间程序都被称为一个进程,它们有自己的内存和共享的CPU时间。
  • Kernel的API
    它决定了应用程序如何访问Kernel。通常来说,这里是通过所谓的系统调用(System Call)来完成。系统调用与程序中的函数调用看起来是一样的,但区别是系统调用会实际运行到系统内核中,并执行内核中对于系统调用的实现。

系统调用在应用程序

open()

如果应用程序需要打开一个文件,它会调用名为open的系统调用,并且把文件名作为参数传给open.

fd = open("fileneam",1);

这里看起来像是个函数调用,但是open是一个系统调用,它会跳到Kernel,Kernel可以获取到open的参数,执行一些实现了open的Kernel代码,或许会与磁盘有一些交互,最后返回一个文件描述符对象。

write()

如果想要向文件写入数据,相应的系统调用是write。你需要向write传递一个由open返回的文件描述符作为参数。

write(fd,"hello\n",6);

第二个参数的指针,实际上是内存中的地址。所以这里实际上告诉内核,将内存中这个地址起始的6个字节数据写入到fd对应的文件中。

fork()

fork创建了一个与调用进程一模一样的新的进程,并返回新进程的process ID/pid。

#include“kernel/types.h”
#include"user/user.h"
int main()
{
	int  pid;
	pid = fork();
	printf("fork() returnd %d\n",pid);
	if(pid==0){
		printf("child\n");
		}
	else{
		printf("parent\n");
		}
	exit(0);

fork会拷贝当前进程的内存,并创建一个新的进程,这里的内存包含了进程的指令和数据。之后,我们就有了两个拥有完全一样内存的进程。fork系统调用在两个进程中都会返回,在原始的进程中,fork系统调用会返回大于0的整数,这个是新创建进程的ID。而在新创建的进程中,fork系统调用会返回0。所以即使两个进程的内存是完全一样的,我们还是可以通过fork的返回值区分旧进程和新进程。
调用进程通常称为父进程,父进程看到的pid必然大于0。所以父进程会打印“parent”,子进程会打印“child”。之后两个进程都会退出。

编写操作系统的难点

  • 内核的编译环境。在编写、修改,扩展内核,或者写一个新的操作系统内核时,你实际上在提供一个基础设施让别人来运行他们的程序。当程序员在写普通的应用程序时,应用程序下面都是操作系统。而当我们在构建操作系统时,在操作系统下面就是硬件
  • 需要满足一些列矛盾的需求。
  1. 操作系统既高效又易用。高效通常意味着操作系统需要在离硬件近的low-level进行操作,而易用则要求操作系统为应用程序提供抽象的high-level可移植接口。难点提供一个简单可移植,同时又高效的抽象接口
  2. 强大的操作系统服务于简单接口直接的矛盾。
    不想程序员看到数量巨多,复杂且难以理解的的内核接口。因为,如果他们不理解这些接口,就会很难使用这些接口。所以,要提供一个简单的接口,同时又包含了强大的功能。
  3. 内核具备灵活的接口和安全性的矛盾。
    操作系统应该提供自由的操作给程序员,但是这个自由是有限制的,不能让程序直接访问硬件,这会有很大的风险
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值