[翻译] Operating System-There Easy Pieces 2.操作系统介绍

《 Operating System-There Easy Pieces 》这本书是一本非常好的操作系统教材,里面讲述了进程管理、内存管理、并发和文件系统的原理、历史。浅显易懂,是学习操作系统不可多得的好书。但是目前只有英文版,其实英文版词汇量也不算多,我这英语水平看着都不会太吃力。

但还是想翻译成中文,以便以后复习方便。可我最近发现已经有中文翻译版本的书出版在 卖了,而我目前只翻译了前10章。一下子没有了动力。

把书买了回来,先看看。前10章自己翻译(其实基本是谷歌翻译)的内容就在这里贴出来吧。

 

 

2.操作系统介绍

如果您正在攻读本科操作系统课程,那么您应该已经知道计算机程序运行时发生了什么。如果没有,这本书(和相应的课程)将很难。

 - 所以你应该停止阅读这本书,或者跑到最近的书店,去学习消化必要的背景资料(Patt / Patel [PP03],特别是Bryant / O'Hallaron [BOH10]是非常好的书) 。

那么程序运行会发生什么?

好吧,正在运行的程序做了一件非常简单的事情:它执行指令。每秒数百万(有时甚至数十亿)次,处理器从存储器中取出指令,对其进行解码(即,确定这是哪条指令),并执行它(即,让该指令完成该做的事,比如两个数字相加,访问内存,检查条件,跳转到一个函数,等等)。完成此指令后,处理器继续执行下一条指令,依此类推直到程序最终完成。

因此,我们刚刚描述了冯诺依曼计算模型的基础知识。听起来很简单吧?但是在本课程中,我们将学习在程序运行的同时,还有很多其他的东西正在进行,其主要目标是使系统易于使用。

事实上,有一大堆软件负责使程序运行变得容易(甚至允许你看似同时运行多个程序),允许程序共享内存,使程序与设备交互,以及其他有趣的类似的东西。该软件主体称为操作系统(OS),因为它负责确保系统以易于使用的方式正确有效地运行。

操作系统执行此操作的主要方式是通过我们称为虚拟化的通用技术。也就是说,操作系统采用物理资源(例如处理器,内存或磁盘)并将其转换为更通用,功能强大且易于使用的虚拟形式。因此,我们有时将操作系统称为虚拟机。

当然,为了让用户告诉操作系统做什么从而利用虚拟机的功能(例如运行程序,分配内存或访问文件),操作系统还提供了一些接口(您可以调用的API)。事实上,典型的OS会导出几百个可供应用程序使用的系统调用。由于操作系统提供这些调用来运行程序,访问内存和设备以及其他相关操作,我们有时也会说操作系统为应用程序提供了标准库。

最后,因为虚拟化允许许多程序运行(从而共享了CPU),并且许多程序同时访问自己的指令和数据(从而共享内存),以及许多访问设备的程序(因此共享磁盘等等),OS有时被称为资源管理器。每个CPU,内存和磁盘都是系统的资源;因此,操作系统的角色是管理这些资源,有效或公平地执行,或者考虑到许多其他可能的目标。为了更好地理解操作系统的作用,让我们看看一些例子。

1   #include <stdio.h>

2   #include <stdlib.h>

3   #include <sys/time.h>

4   #include <assert.h>

5   #include "common.h"

6

7   int

8   main(int argc, char *argv[])

9   {

10        if (argc != 2) {

11             fprintf(stderr, "usage: cpu <string>\n");

12             exit(1);

13        }

14        char *str = argv[1];

15        while (1) {

16             Spin(1);

17             printf("%s\n", str);

18        }

19        return 0;

20  }

Figure 2.1: Simple Example: Code That Loops and Prints

 

 

2.1 虚拟CPU

图2.1描绘了我们的第一个程序。它没有做太多事情。实际上,它所做的只是调用Spin(),这是一个重复检查时间的函数,一旦运行一秒就会返回。 然后,它打印出用户在命令行上传入的字符串,并永远重复。 假设我们将此文件保存为cpu.c并决定在具有单个处理器的系统上编译和运行它。 以下是我们将看到的内容:

 

prompt> gcc -o cpu cpu.c -Wall

prompt> ./cpu "A"

A

A

A

A

ˆC

prompt>

 

运行过程比较无聊:系统开始运行程序,该程序反复检查直到第二个运行的时间。 一旦第二次过去,代码将打印用户传入的输入字符串(在本例中为字母“A”),然后继续。 注意程序将永远运行; 只有按“Control-c”(在基于UNIX的系统上将终止在前台运行的程序)我们才能暂停程序。

现在,让我们再跑一下这个程序,但这一次,让我们运行同一个程序的许多不同实例。 图2.2显示了这个稍微复杂的例子的结果。

prompt> ./cpu A & ; ./cpu B & ; ./cpu C & ; ./cpu D & [1] 7353

[2] 7354

[3] 7355

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值