软件工程-基础课程-操作系统_嵌入式操作系统.docx

软件工程-基础课程-操作系统_嵌入式操作系统.docx

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1

PAGE1

操作系统基础

1操作系统的概念与功能

在计算机科学中,操作系统(OperatingSystem,简称OS)是管理计算机硬件与软件资源的计算机程序。它是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统的主要功能包括:

进程管理:控制和管理进程的创建、执行、调度和终止,确保多个进程能够高效地共享处理器资源。

存储管理:管理内存资源,包括内存的分配、回收、地址映射和内存保护等。

文件管理:提供文件的创建、删除、读写、打开、关闭等操作,以及文件系统的组织和管理。

设备管理:控制和管理各种硬件设备,如磁盘、打印机、网络设备等,实现设备的驱动和资源的分配。

用户接口:提供用户与操作系统交互的界面,包括命令行界面和图形用户界面。

2操作系统的发展历程

操作系统的发展经历了以下几个阶段:

无操作系统阶段:早期的计算机没有操作系统,程序员直接与硬件交互,编写机器语言程序,效率低下且难以管理。

单道批处理系统:为了解决程序员直接与硬件交互的问题,出现了批处理系统,它能够自动、连续地处理作业,但一次只能处理一个作业。

多道批处理系统:进一步发展,多道批处理系统允许多个作业同时在内存中运行,提高了系统的资源利用率。

分时操作系统:随着用户对交互式操作的需求增加,分时操作系统应运而生,它允许多个用户通过终端同时使用计算机,操作系统将CPU时间分成很短的时间片,轮流分配给各个用户,使得每个用户都感觉像在独占计算机。

实时操作系统:实时操作系统用于需要对事件做出及时响应的场合,如工业控制、军事系统等,它保证在规定的时间内完成任务。

网络操作系统:随着网络技术的发展,网络操作系统能够管理网络资源,提供网络服务,如文件共享、打印服务等。

分布式操作系统:分布式操作系统管理分布在不同地理位置的多个计算机,使得它们能够像一个系统一样协同工作。

嵌入式操作系统:嵌入式操作系统用于嵌入式系统,如手机、汽车、家电等,它通常具有体积小、功耗低、实时性强等特点。

3操作系统的分类

操作系统可以根据不同的标准进行分类,以下是几种常见的分类方式:

按用户接口分类:可以分为命令行操作系统和图形用户界面操作系统。

按任务处理方式分类:可以分为批处理操作系统、分时操作系统、实时操作系统和网络操作系统。

按硬件平台分类:可以分为单机操作系统、网络操作系统和分布式操作系统。

按操作系统结构分类:可以分为单体操作系统、微内核操作系统和层次结构操作系统。

按操作系统用途分类:可以分为通用操作系统、嵌入式操作系统和专用操作系统。

3.1示例:进程管理中的进程调度

在进程管理中,进程调度是一个关键的环节,它决定了进程在CPU上的执行顺序。下面是一个简单的进程调度算法——先来先服务调度算法(First-Come,First-Served,简称FCFS)的Python实现示例:

#进程调度算法:先来先服务调度算法(FCFS)

deffcfs(processes):

先来先服务调度算法实现

:paramprocesses:进程列表,每个进程是一个字典,包含进程ID、到达时间、执行时间

:return:进程的执行顺序

#按照到达时间排序进程

processes.sort(key=lambdax:x[arrival_time])

#初始化执行顺序列表

execution_order=[]

#当前时间

current_time=0

#遍历进程列表

forprocessinprocesses:

#如果当前时间小于进程的到达时间,更新当前时间

ifcurrent_timeprocess[arrival_time]:

current_time=process[arrival_time]

#更新当前时间,加上进程的执行时间

current_time+=process[execution_time]

#将进程ID添加到执行顺序列表中

execution_order.append(process[process_id])

returnexecution_order

#进程列表

processes=[

{process_id:1,arrival_time:0,execution_time:3},

{process_id:2,

文档评论(0)

kkzhujl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档