101 - Lecture 6

embedded/2024/10/18 2:03:27/

1. Operating systems: Examples

• 计算机历史上一些重要的操作系统及其发展时间。从1960年代的OS/360,到1970年代的Unix,再到1980年代的MS-DOS和Mac OS,以及1990年代的Windows 95、98和NT,最后提到了2001年推出的Mac OS X和Linux、BSD Unix等操作系统。这些操作系统的发展标志着计算机技术的进步和软件行业的发展。
• 列举了不同年代的操作系统,展示了它们的演变过程。从早期的大型机系统到现代桌面操作系统,操作系统的演变体现了技术进步和用户需求的变化。

操作系统在过去40多年中的发展,技术核心(at the technical core)变化并不大,唯一的显著区别是引入了窗口化界面(windowing interfaces)。问题的讨论点在于:

1.	你是否同意这种观点?
2.	为什么会出现这种现象?

现象分析:

1.	技术核心的稳定性:操作系统的基本任务,如管理硬件资源、提供用户与硬件交互的接口,仍然保持不变。这些**核心功能设计得非常通用和稳健**,因此在几十年内没有太大的技术革新。
2.	用户体验的改进:引入窗口化界面是为了提升用户体验。早期的操作系统多以命令行界面为主,用户需要输入复杂的指令来操作计算机。而窗口化界面极大简化了操作流程,让用户可以**通过直观的图标和窗口来执行命令**。

2. Operating systems(OS): Functions

• 操作系统的功能主要是解释和执行(interpret and carry out)由用户或运行在计算机上的应用程序(application programs)发出的命令(commands)。

• 操作系统作为计算机的系统软件之一提供了管理计算机硬件资源用户交互的功能(为用户提供操作界面)。
(这个界面可以是图形用户界面(GUI),如Windows、macOS,也可以是命令行界面(CLI),如Linux中的Shell)

Two fundamental purposes

计算机系统管理(Management)的两个基本目的。

  1. 管理硬件,确保其高效运作;
  2. 提供功能性(functionalities),使用户能够高效、公平且安全地访问机器的功能。此外,还包括与用户的交互。

(交互(Interaction):交互指的是计算机系统与用户之间的互动,比如通过界面接收用户指令和反馈信息。)

3. Onion ring model

为了实现操作系统的宗旨,系统软件通常被安排成多个层次。

请添加图片描述

这张图片展示了操作系统的“洋葱环模型”(Onion Ring Model),解释了操作系统的多层次架构。每一层从内到外依次为:

  1. 硬件 (Hardware):这是最核心的层,代表了计算机的物理硬件资源,如CPU、内存、硬盘等。
  2. 驱动程序 (Drivers):驱动程序与硬件直接交互,为操作系统的更高层提供对硬件的控制。
  3. 内核 (Kernel):内核是操作系统的核心部分,它负责管理系统资源和硬件设备,并提供进程调度、内存管理等关键功能。
  4. 命令行界面 (CLI):这是用户与系统进行交互的一种方式,用户通过输入命令来让操作系统执行相应的任务。
  5. 用户应用程序 (User Applications):这是用户层,可以运行各种应用程序,如文本编辑器、浏览器等。这些应用程序通过操作系统提供的服务与硬件间接交互。

为什么使用多层结构?(multiple layers)

•	模块化设计:每一层负责不同的功能,模块化设计使得系统更易于维护和升级。每一层只需要与相邻的层进行通信,从而简化了系统的复杂性。
•	抽象化:每一层对下层的实现进行了抽象,上层应用程序无需关心硬件的具体实现细节,这使得开发更为便捷和高效。
•	安全性:多层设计可以隔离不同的功能模块,确保了系统的安全性和稳定性。例如,用户应用程序不能直接操作硬件,而是通过操作系统进行管理,这样能够防止误操作导致系统崩溃。

这个模型展示了操作系统如何通过分层来实现复杂的功能,并确保整个系统的高效、稳定和安全运行。

操作系统:操作系统是计算机的核心系统软件,它直接管理硬件资源,并为应用程序提供运行环境。它作为用户与硬件之间的桥梁,负责控制和协调计算机中的各种资源,如CPU、内存、存储设备和输入输出设备。(Windows、macOS、Linux、Android、iOS)
软件:软件是一个广义的术语,指的是任何可以运行在计算机上的程序。软件分为系统软件应用软件系统软件包括操作系统、驱动程序等,而应用软件则包括如文字处理器、游戏、浏览器等各种应用程序。

我们通过操作系统使用计算机。操作系统就像是计算机的门卫(gatekeeper),负责管理和控制计算机硬件与软件资源,确保系统的正常运行。它通常决定了计算机的整体效率(overall efficiency),就像一个管家(butler)一样,负责协调和优化计算机的性能。

操作系统的核心部分负责直接与硬件交互。这部分通常称为内核(Kernel),它包括设备驱动程序(deivers)、内存分配器(memory allocator)等关键功能。

(内核是操作系统中最基本的部分,它管理着计算机的硬件资源,并为上层的应用程序提供服务)

命令行界面(CLI)为用户提供了一种访问操作系统的方式。
accessibilities to the system

Modern operating Systems

现代操作系统允许多个程序同时运行(simultaneous processing),提高了工作效率。

相比之下,DOS操作系统在运行一个程序时,必须等待该程序完成才能运行下一个程序,效率较低。

现代操作系统通过后台处理(background spooling)提供一定程度的并发性(degree of concurrency)。Windows、Unix和Linux等操作系统支持多任务处理(Multi-tasking),即同时运行多个程序,并且还支持多个用户同时使用系统(多用户功能Multi-user)。

4. Interaction with operating systems

操作系统的交互方式,主要包括以下两个方面:

1.	命令行界面(CLI - Command Line Interpreter):
•	DOS:用户通过命令行输入命令,操作系统执行相应的任务。
•	Unix/Linux:用户可以通过编写Shell脚本(scripts)(命令的序列sequences of instructions)来与系统进行交互,执行复杂任务。
•	Windows/Mac OS X:用户通过点击图标(icons)来操作系统,执行相应的任务。
2.	用户程序中的函数调用(function calls)(API - Application Programming Interface):
•	用户程序可以通过调用操作系统提供的API来访问系统功能。图片展示了一个C语言的代码片段:
#include <stdio.h>
void main(){printf("Hello world!");
}

这个例子说明了用户通过API(如printf)调用操作系统的服务,最终在屏幕上输出“Hello world!”。

总结:

• CLI是一种直接通过命令与操作系统交互的方式,适用于DOS和Unix/Linux等系统。
• API是应用程序与操作系统交互的方式,程序通过API函数调用操作系统提供的服务,如文件操作、输入输出等。

5. OS services

Example

1. Java编译器示例(编译过程)

当你在终端中输入javac MyProc.java时,操作系统会将javac编译器加载到内存中,并执行它来编译Java程序。
• 关键点:任何程序都必须先被操作系统加载到内存(RAM)中才能执行。操作系统负责将程序(如 javac)从次级存储设备(硬盘disk)加载到主存(main memory)(RAM)并开始执行。
• 结论:操作系统通过接收用户输入的命令加载相应的程序执行任务来协调用户与硬件之间的交互。

2. Linux命令示例

在Linux系统中使用 ls 命令列出当前目录文件时,操作系统如何响应并提供文件信息。操作系统通过API接口提供文件系统信息,确保命令成功运行。

在Linux系统中,用户可以输入 ls 命令(类似于DOS中的 dir),列出当前目录中的文件。
• 操作系统的作用:操作系统提供了文件系统的访问权限,ls 命令通过操作系统的API请求并获取当前目录的文件信息。
• 结论:操作系统在文件管理中的角色至关重要,它为用户提供访问和操作文件的功能。

3. 操作系统的复杂性(Complexity of OS operation)

该图展示了操作系统在处理用户命令时的复杂性。从用户输入命令到程序执行,操作系统需要负责解释命令、找到相应的程序文件、将文件加载到内存并运行。

整体解析:
操作系统(OS)如何处理用户输入的命令:

  1. 操作系统需要接受来自键盘的输入(input keystrokes)
  2. 它需要将这些输入解释为一个命令
  3. 操作系统需要到执行该命令所需的程序文件的位置(determine the location)
  4. 它会从辅助存储设备(如硬盘)中读取程序文件的适当部分(appropriate blocks)到主内存
  5. 操作系统需要为即将执行的程序设置上下文环境(set up context)
  6. 操作系统将控制权转交给正在执行的程序(transfer control)
  7. 当程序执行完毕后,操作系统会恢复控制权。(resume control)
4. 多任务处理

操作系统在处理多任务时的复杂性。操作系统通过内存管理、任务调度和安全内核,确保多个程序能够同时运行,资源能够被合理分配,程序之间不会互相干扰。

当多个程序同时执行时,操作系统必须包含一些特定的程序来管理这些程序,确保它们能有效地运行。这些程序包括:

  1. 内存管理器(memory manager):负责为每个程序分配(allocate)内存和其他资源。
  2. 调度器(scheduler):负责为每个程序分配CPU时间,这将在后面详细讲解。
  3. 安全内核(security kernel):负责维护每个程序的完整性(integrity),确保系统的安全。

总结:这些展示了操作系统在程序加载、执行以及多任务管理方面的重要作用。操作系统作为计算机系统的核心,负责协调硬件资源和用户输入,确保计算任务的高效、安全执行。

请添加图片描述

这张图展示了操作系统的中介作用,操作系统通过命令接口、文件服务和输入/输出服务为用户和应用程序提供与硬件的交互途径。

1.命令接口 (Command Interface):

•命令接口是用户与操作系统之间的桥梁。用户通过命令行或图形用户界面(GUI)输入指令,操作系统解释并执行这些指令。

2.文件服务 (File Services):

•文件服务管理计算机中的文件和目录。它负责文件的创建、读取、写入、删除和权限管理。应用程序通过操作系统提供的文件服务来访问存储设备上的数据。

3.输入/输出服务 (I/O Services):

• 输入/输出服务负责管理硬件设备(如键盘、鼠标、显示器、磁盘等)与应用程序之间的数据交换。操作系统通过I/O服务向应用程序提供对硬件的抽象访问。

4.计算机硬件 (Computer Hardware):

• 操作系统通过I/O服务与底层硬件交互,管理硬件资源并确保应用程序可以安全高效地使用硬件设备。

6. Computer networks

冯·诺伊曼是20世纪计算机科学的重要人物,他提出的“冯·诺伊曼架构”对现代计算机设计产生了深远的影响。这里提到的变化主要涉及操作系统和计算机网络

现代操作系统通常通过网络API(如套接字接口)为应用程序提供对网络资源的访问。这意味着应用程序可以通过操作系统与外部网络连接,进行数据的发送和接收。

(套接字接口是一种让程序能够使用网络通信的编程接口,它允许计算机之间进行数据交换。)

计算机网络的定义:

计算机网络则是由相互连接(interconnected)的独立(autonomous)计算机组成的集合,目的是为了便于快速交换信息。这种网络可以是局域网(LAN)、广域网(WAN)或互联网,它们让世界各地的人们能够通过计算机进行通信和共享资源。

计算机网络的作用

1.提高计算能力(computing power):

•	分布式计算项目(如SETI@home,Folding@home)通过网络将多台计算机的计算能力聚合起来,形成一个强大的计算网络,解决复杂的计算问题。计算机网络可以通过将任务分配给多个设备来提升整体计算性能。

2.共享有价值的资源

3.方便用户之间的交互:

4.即时获取信息:

计算机网络的连接性(connectivity)如何促进设备间的通信,并支撑了信息时代的基础。
(1).通过网络传输数据、语音(voice)和多媒体信息(multimedia)
(2).电子邮件作为网络通信的典型例子,展示了网络在信息交换中的重要性
(3).远程办公(Telecommuting)
– 在家或在路上工作
– 通过电话、传真(fax)和/或电脑与办公室沟通
• 在线购物,电子或移动商务(E-/M-commerce)

8.Bowsers and the World Wide Web

Miscrosoft Internet Explorer(IE浏览器)和 Netscape Navigator是曾经在互联网早期占据主导地位的两个主要网络浏览器。它们在20世纪90年代到21世纪初的互联网发展中扮演了重要角色,随着技术的不断进步,如今已经被其他浏览器如Google Chrome、Mozilla Firefox等所取代。

  1. Microsoft Internet Explorer:微软公司的Internet Explorer浏览器,简称IE,是微软Windows操作系统的一个组件
  2. Netscape Navigator 是第一批支持 JavaScript 的浏览器之一,这种编程语言使网页变得更加动态和互动。此外,它也是第一个支持 SSL(安全套接层协议)的浏览器

7. Client-server computing

•	客户端-服务器计算模型在网络环境中很常见,客户端发起请求服务,服务器提供响应/服务。

Client: The originator of a request.
Server: The supplier of the service.

以Web(互联网)为例,Web是一个由许多服务器和客户端设备组成的网络系统,用户通过浏览器等客户端软件访问互联网上的各种服务和信息。
在Web中,关键实体(key entities)包括:

  1. 客户端:用户使用的设备,如电脑、智能手机或平板电脑。
  2. 服务器:托管网站、应用程序和其他服务的远程计算机。
  3. 网络:连接客户端和服务器的通信渠道,通常是互联网。

Exercise

  1. 识别Web中的关键实体:

    • 客户端-服务器模型包含两个主要实体(key entities):客户端和服务器。
    • 客户端:通常是用户的浏览器,负责向服务器发出请求。
    • 服务器:处理客户端请求并提供相应的资源或服务,如网页、数据或文件

  2. 解释服务如何通过客户端-服务器计算模型提供(rendered):

    • 在客户端发出请求后,服务器接收请求并进行处理,通常从数据库或文件系统中获取数据。然后,服务器将数据通过网络返回给客户端,客户端负责显示结果。
    • 例如,当用户在浏览器中输入一个网址时,客户端发送HTTP请求,服务器处理并返回网页内容。

  3. 确定Web场景下的潜在瓶颈(bottleneck):

    • 网络延迟:数据从客户端到服务器的传输过程中,网络延迟可能会影响性能,尤其是在网络连接不佳的情况下。
    • 服务器负载:当大量客户端同时请求服务时,服务器可能负载过重,导致响应时间变慢,甚至出现服务器宕机。
    • 带宽限制:如果网络带宽有限,大量的数据传输可能会导致网络拥堵,从而影响数据传输速度。

Q&A

1.What is the most important development during the past 40 years evolution of OS?

• 回答:过去40年操作系统最重要的发展之一是多任务处理(multi-tasking)的引入,以及网络功能的集成。这些改进大大增强了操作系统的功能,使其能够处理多个程序,同时允许计算机连接到全球网络。

2.OS needs to provide fair & protected access to system resources, why?

• 回答:操作系统需要提供公平和受保护的资源访问,以确保多个程序和用户可以同时使用系统,而不会相互干扰。此外,受保护的访问可以防止未授权的用户或程序破坏系统的安全性或稳定性。

3.Explain ‘multi-tasking’.

• 回答:多任务处理是指操作系统能够同时运行多个程序。这意味着操作系统可以在不影响其他任务的情况下为每个程序分配时间和资源,用户可以同时执行多项任务。

4.Mention 3 functions that need to be provided when an OS is to support ‘multi-tasking’.

• 回答:支持多任务处理的操作系统需要提供以下三项功能:
1. 进程管理:管理多个进程的创建、执行和终止。
2. 内存管理:确保每个任务都有足够的内存使用,并防止它们相互覆盖。
3. CPU调度:分配CPU时间给每个任务,确保每个任务都有时间执行。

5.Explain ‘multi-user’.

• 回答:多用户功能指操作系统可以支持多个用户同时使用同一台计算机或系统资源。每个用户都有独立的账户、权限和资源分配,确保彼此之间的隔离性和安全性。

6.How does operating system provide access to network facilities?

•回答:操作系统通过网络API(如套接字接口)提供对网络设施的访问。它管理网络通信,确保数据可以通过网络发送和接收,使应用程序能够与远程服务器进行交互。

7.Telecommuting or online shopping are enabled through the introduction of ?

• 回答:远程办公和在线购物是通过互联网的引入得以实现的。操作系统通过提供对网络的支持,使得用户可以通过互联网进行远程访问、购物、交流等活动。


http://www.ppmy.cn/embedded/127761.html

相关文章

网络知识|网络设计

网络知识|网络设计 主流的防病毒厂商和产品&#xff08;国内、外各列举3个&#xff09; 国外&#xff1a;norton&#xff08;诺顿&#xff09;、kaspersky、Bitdefender 国内&#xff1a;绿盟、奇安信、深信服、天融信 国内外的不同linux产品&#xff08;各列举3个&#xff…

前端技巧汇总

保持盒子在中间位置&#xff1a; 中间盒子设置位绝对定位 上下左右都设置为0 margin为auto中间 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width,…

ADMEMS矩阵

什么是ADMEMS矩阵&#xff1f; ADMEMS矩阵是架构设计中的一种需求分析工具&#xff0c;它的目标是通过系统化的方式分析和整理架构设计中的多层次需求&#xff0c;确保业务需求、用户需求、技术实现、约束条件等都能够得到合理的平衡。矩阵的核心是将广义功能、质量要求和约束…

任务与微任务

JavaScript 本质上是一门单线程语言。自从定时器&#xff08;setTimeout() 和 setInterval()&#xff09;加入到 Web API 后&#xff0c;浏览器提供的 JavaScript 环境就已经逐渐发展到包含 任务调度 、 多线程应用开发 等强大的特性。 JavaScript 执行上下文 JavaScript 代码…

Github 2024-10-14开源项目周报Top14

根据Github Trendings的统计,本周(2024-10-14统计)共有14个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目7C++项目2C项目2Swift项目1Jupyter Notebook项目1Java项目1Rust项目1Python中的算法实现集合 创建周期:2831 天开发语言:Python协议…

C++ AVL树

大家好呀&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流哦&#xff08;不能私学&#xff0c;谁私学谁是&#xff09; 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知…

探索 Jupyter 核心:nbformat 库的神秘力量

文章目录 探索 Jupyter 核心&#xff1a;nbformat 库的神秘力量1. 背景介绍&#xff1a;为何选择 nbformat&#xff1f;2. nbformat 是什么&#xff1f;3. 如何安装 nbformat&#xff1f;4. 简单的库函数使用方法4.1 读取 Notebook 文件4.2 修改 Notebook 中的单元格4.3 添加 M…

洗衣店订单管理:Spring Boot技术实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…