操作系统学习笔记-1.1操作系统的基本概念

跟着王道计算机学习,反正也不知道哪个好,就选择王道考研

文章目录

  • 1.1操作系统的基本概念
      • 操作系统的功能和目标
      • GUI、CLI 和 API 对比
      • 操作系统的特征
        • 1. 并发(Concurrency)
        • 2. 共享(Sharing)
        • 3. 虚拟(Virtualization)
        • 4. 异步(Asynchrony)
      • 课后习题
        • 库函数和系统调用的区别和联系

1.1操作系统的基本概念

操作系统的功能和目标

功能详细描述目标
进程管理进程管理负责创建、调度、终止进程,并提供进程间的同步与通信机制。操作系统通过调度算法合理分配 CPU 时间,使多个进程可以并发运行。确保系统资源高效利用,实现进程的并发与协调,提高 CPU 使用率。
内存管理内存管理负责跟踪每个进程使用的内存区域,决定内存分配和回收,防止进程相互干扰(内存保护)。内存管理包括分页、分段等技术,确保程序在有限的物理内存中高效运行。提供虚拟内存机制,优化内存的使用和分配,避免内存碎片,提高系统稳定性和运行效率。
文件系统管理文件系统管理负责创建、删除、读写文件,管理文件的访问权限,并通过目录结构组织文件。它还提供文件的存储、备份和恢复功能。实现高效的文件存储与访问,确保文件数据的安全性和可靠性。
设备管理操作系统通过设备驱动程序管理输入输出设备,如硬盘、打印机、键盘等。它负责设备的控制、数据传输以及设备和进程间的交互。确保设备的高效利用,提供设备独立性,使应用程序可以不必关心具体硬件设备。
存储管理存储管理负责管理计算机的二级存储(如硬盘),包括文件系统的组织、数据存取的优化。它协调主存储器和辅助存储器的使用,以实现高效的数据存储和检索。最大化存储资源的利用,确保数据安全和存储效率。
用户界面操作系统为用户提供命令行界面(CLI)或图形用户界面(GUI),使用户能够与计算机进行交互。它负责处理用户输入并返回响应。提高系统的可操作性和用户体验,使操作系统易于使用。
安全管理操作系统提供多种安全机制,包括用户认证、访问控制、数据加密等,保护系统和用户数据免受恶意攻击。确保系统和数据的完整性、机密性和可用性,防止未经授权的访问。
错误检测与恢复操作系统负责检测硬件、软件和用户操作中的错误,并采取措施进行恢复,确保系统的稳定运行。提供错误容忍机制,避免系统崩溃,确保系统可靠性和稳健性。
网络管理操作系统支持网络通信协议,管理网络资源,允许多个计算机之间的数据交换与共享资源。实现网络的高效管理,提供网络连接支持,提高数据通信的性能。

GUI、CLI 和 API 对比

接口类型描述优点缺点应用场景
GUI(图形用户界面)图形化界面,用户通过鼠标、键盘点击图标、按钮、窗口等进行操作。常见于操作系统桌面、手机应用、软件界面。1. 易于使用,学习门槛低。
2. 操作直观,适合图像、视频等多媒体操作。
3. 交互体验好,适合普通用户。
1. 消耗较多系统资源(内存、CPU)。
2. 对特定任务操作效率低。
3. 对设备有较高要求(如需要显示器)。
1. 普通用户日常使用的操作系统(Windows、macOS)。
2. 应用软件(如Photoshop、Office)。
3. 移动设备的操作系统和应用(如Android、iOS)。
CLI(命令行接口)通过键盘输入文本命令与系统或程序交互。常见于开发、服务器管理。1. 对专业用户操作效率高,适合批处理。
2. 资源占用少,轻量级。
3. 灵活性强,可直接访问底层功能。
1. 学习曲线陡峭,需要记住命令。
2. 不适合图像化或复杂的多媒体操作。
3. 对普通用户不够友好。
1. 系统管理(Linux服务器、Windows命令行)。
2. 编程开发环境(终端、shell脚本)。
3. 网络管理和自动化任务处理。
API(程序接口)提供给程序之间的接口,允许程序通过函数调用与操作系统或其他程序交互。开发者使用API来集成不同的软件功能。1. 允许程序高度自动化,适合大规模处理。
2. 无需人机交互,可直接用于软件或硬件控制。
3. 灵活性和扩展性强,可实现复杂的功能集成。
1. 对普通用户不可见,需要开发者实现。
2. 需要编写代码和理解接口文档。
3. 调试和集成可能比较复杂。
1. 软件开发(操作系统API、Web API)。
2. 应用程序之间的功能集成(如支付系统、地图服务)。
3. 硬件设备驱动开发和控制。

操作系统的特征

操作系统的核心特征有四个:并发共享虚拟异步

1. 并发(Concurrency)

定义
并发指的是多个程序或进程可以同时在操作系统中进行执行。尽管从宏观上看它们是"同时"运行的,但从微观角度来看,由于系统资源的限制,通常它们是在时间片轮转中交替执行的。操作系统通过调度算法来管理多个任务,使它们看似同时进行。

关键点

  • 多进程和多线程:并发是多进程、多线程系统的基础。操作系统通过合理调度多个进程或线程来提高系统的利用率。
  • 资源管理:操作系统需要对多个进程争夺资源(如CPU、内存等)进行有效的调度和管理,以避免冲突。
    单核CPU只能运行一个程序,各程序并发执行。多核CPU可以并行执行
2. 共享(Sharing)

定义
共享指的是多个进程或用户可以共同使用系统中的硬件资源(如CPU、内存、磁盘等)和软件资源(如文件、数据库等)。资源共享是操作系统的一项基本功能,旨在提高资源利用率和用户体验。

关键点

  • 互斥共享:一些资源如打印机,只允许一个进程在某一时刻使用,这样的资源被称为互斥资源。操作系统通过加锁机制来管理互斥资源的访问。
  • 同时共享:一些资源可以同时被多个进程访问,例如只读文件或数据,这种共享形式允许多个进程同时进行非破坏性访问。

实际应用

  • 多个用户通过网络访问同一服务器,多个应用共享内存中的数据。
3. 虚拟(Virtualization)

定义
虚拟化是指操作系统通过某种技术手段,把实际的物理资源(如CPU、内存、硬盘等)映射为多个“虚拟资源”,以便使每个进程都认为自己拥有独立的资源,从而提升效率和隔离性。虚拟化不仅限于硬件资源,还可以应用于操作系统层面,如虚拟内存。

关键点

  • 虚拟内存:操作系统通过虚拟内存技术,使得每个进程都拥有完整的地址空间,即使物理内存不足,系统也能通过页面置换(paging)技术将数据暂时存储在磁盘上。
  • 虚拟机:虚拟化技术可以让一台物理机器运行多个虚拟机,每个虚拟机运行独立的操作系统,这提高了硬件的利用率。

实际应用

  • 时分复用技术:现代云计算环境中,服务器通常运行多个虚拟机,每个虚拟机为用户提供一个隔离的计算环境。
  • 空分复用技术:虚拟内存技术允许程序运行时需要的内存空间比实际物理内存大得多。
4. 异步(Asynchrony)

定义
异步性是指在多任务操作系统中,进程的执行往往是不可预测的,进程的执行时间和顺序可能由于资源的限制、调度策略、等待I/O设备等因素而发生变化。每个进程在不同的时间可能获得不同的执行时间,因此进程的执行是间断和不连续的。

关键点

  • 异步调度:操作系统通过进程调度器以异步方式分配CPU给各个进程。各个进程可能需要等待资源或者其他进程的完成,因此进程执行顺序是动态变化的。
  • 中断和信号:操作系统中断机制支持异步事件的处理,系统可以随时打断当前正在运行的进程来处理更高优先级的任务。

实际应用

  • 操作系统在后台处理I/O操作(如磁盘读写、网络请求)时,可以不阻塞其他任务的执行,这种异步执行机制保证了系统的响应速度。

课后习题

计算机开机后,操作系统被加载到内存中的系统区,RAM区。
并行是指多个任务同时在多个处理器或多个处理核心上执行。如果计算机有多个CPU核心,那么操作系统可以将不同的进程分配给不同的核心,这样多个进程就能同时执行。单处理机系统进程与进程不可以并行。

库函数和系统调用的区别和联系

以下是库函数与系统调用的区别和联系的表格展示:

对比维度库函数(Library Function)系统调用(System Call)
执行环境在用户态执行,不涉及内核态。在内核态执行,需要从用户态切换到内核态。
性能开销开销较小,因为不涉及用户态与内核态的切换。开销较大,因为涉及用户态和内核态的上下文切换。
功能范围提供高级功能的封装,不局限于操作系统功能(如排序、字符串操作等)。提供与操作系统内核交互的功能,如文件操作、内存管理、进程控制等。
权限要求在用户态运行,权限较低,不能直接操作硬件或系统资源。需要内核权限,可以直接访问硬件设备和系统资源。
调用方式不涉及操作系统内核,通过库函数直接调用即可。需要通过操作系统提供的接口来调用内核服务。
与操作系统交互通常不直接与操作系统内核交互,除非内部封装了系统调用。直接与操作系统内核交互,获取操作系统的资源和服务。
封装层次高级封装,往往是对多个系统调用的封装或纯用户态实现,如fopen()封装了open()提供最底层的功能,如open()read()write()等。
执行开销场景执行类似memcpy()等纯内存操作时,不涉及系统调用,开销极低。执行文件读写、进程管理等操作时,必须调用系统调用,涉及上下文切换,开销较大。
安全检查在用户态执行,无需经过操作系统的安全检查。需要经过操作系统的安全检查,如权限验证、资源保护等。
示例printf()strlen()qsort()等。open()read()write()fork()等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454126.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用InternVL、LMDeploy和GTE搭建多模态RAG系统

如何将视觉大模型(VLM)与 多模态RAG 结合起来,创建服装搜索和搭配推荐!本文展示了InternVL模型在分析服装图像和提取颜色、款式和类型等关键特征方面的强大功能。 InternVL2是国内首个在MMMU(多学科问答)上突破60的模型&#xff0…

一次使用LD_DEBUG定位问题的经历

在实际工作中,当遇到段错误,我们会很容易的想到这是非法访问内存导致的,比如访问了已经释放的内存,访问数据越界,尝试写没有写权限的内存等。使用gdb进行调试,查看出异常的调用栈,往往可以定位到…

告别装机烦恼,IT小白到IT大神都在用的免费神器

作为USB启动盘制作工具中的佼佼者,Rufus凭借其卓越的性能和实用性,赢得了众多用户的信赖。这款精巧的实用程序不仅能够将系统ISO镜像完美转换为可引导的USB安装介质,还提供了全面的USB设备管理功能。 Rufus的安装包仅有1.5M大小,…

ubuntu系统库和Anaconda库冲突问题

之前安装opencv时没出现过这种问题,自从安装Anaconda后就总遇到问题。记录下自己的解决过程。 目录 第一步 第二步 第三步 安装opencv时出现以下问题: /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_prep_cif@LIBFFI_BASE_7.…

qt QTableview 左侧 序号 倒序

本文主要在QTableview插入数据的基础上,使左边序号实现倒序,实现如下图所示。 解决办法: QTableview左侧是QHeaderView类构成的,重写QHeaderView的paintSection, 重写序号的文字内容,进而 实现QTableview …

FFT过程中自动补零,补零部分FFT结果不为零

在 FFT(快速傅里叶变换) 中,补零(Zero Padding)是为了使信号的点数符合 2 的幂次方,以提高 FFT 的计算效率。然而,即使你对信号进行了补零,FFT 计算后在补零部分可能会得到复数结果不…

医院信息化与智能化系统(5)

医院信息化与智能化系统(5) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的…

python 文件防感染扫描

一、安装 首先,你需要安装 secplugs-python-client 库。你可以通过 pip 命令来安装: pip install secplugs-python-client确保你的 Python 环境已经正确设置,并且网络连接畅通,以便能够顺利安装。 二、基本用法 1. 初始化客户…

nosql课本习题

nosql题目 1. 文档数据库相比其他 NoSQL 的突出优势和特点是什么? 答案: 文档数据库的突出优势在于它的灵活性和可扩展性。不同于传统的关系型数据库,文档数据库允许存储半结构化和非结构化数据,每个文档可以有不同的字段&#x…

【优先算法】--双指针1

“一念既出,万山无阻。”加油陌生人! 目录 1.双指针--移动零 2.双指针-复写零 ok,首先在学习之前,为了方便大家后面的学习,我们这里需要补充一个知识点,我这里所谓的指针,不是之前学习的带有…

二分查找_ x 的平方根搜索插入位置山脉数组的峰顶索引

x 的平方根 在0~X中肯定有数的平方大于X&#xff0c;这是肯定的。我们需要从中找出一个数的平方最接近X且不大于X。0~X递增&#xff0c;它们的平方也是递增的&#xff0c;这样我们就可以用二分查找。 我们找出的数的平方是<或者恰好X&#xff0c;所以把0~X的平方分为<X …

Leetcode—1279. 红绿灯路口【简单】Plus(多线程)

2024每日刷题&#xff08;186&#xff09; Leetcode—1279. 红绿灯路口 C实现代码 class TrafficLight { public:TrafficLight() {}void carArrived(int carId, // ID of the carint roadId, // ID of the road the car travels on. Can …

【Linux】僵尸进程和孤儿进程

一、僵尸进程 何为僵尸进程&#xff1f; 在 Unix/Linux 系统中&#xff0c;正常情况下&#xff0c;子进程是通过父进程创建的&#xff0c;且两者的运行是相互独立的&#xff0c;父进程永远无法预测子进程到底什么时候结束。当一个进程调用 exit 命令结束自己的生命时&#xff…

【Linux】计算机网络协议详解与通信原理探究

目录 1、协议 1.1.初识协议 1.2.协议分层 日常通信的例子&#xff1a; 1.3.OSI 七层模型 1.4.TCP/IP五层(或四层)模型 1.5.OS和网络之间的关系 1.6.协议的本质 2.局域网通信 2.1.什么是局域网&#xff1f; 2.2.关于报文相关基础知识 报文和协议的关系&#xff1a; …

传输层协议UDP详解

目录 一. 知识准备 1.1 传输层 1.2 重识端口号 二. UDP协议 三. UDP协议特点 一. 知识准备 1.1 传输层 前面已经讲过&#xff0c;HTTP协议是应用层协议&#xff0c;在此之前&#xff0c;我们短暂的认为HTTP是直接通过应用层与外界通信的。但是我们要知道&…

4本SCI/SSCI期刊更名,10月WOS更新!速看!

期刊动态 2024年10月科睿唯安期刊目录更新 2024年10月22日&#xff0c;科睿唯安更新了WOS期刊目录&#xff0c;此次更新&#xff0c;期刊被编辑除名11本&#xff0c;停止出版1本&#xff0c;4本更名&#xff0c;停产1本&#xff0c;新增63本。 剔除期刊 11本期刊被剔 Enginee…

go-zero系列-限流(并发控制)及hey压测

参考地址&#xff1a; go-zero系列-限流(并发控制)&#xff1a;https://go-zero.dev/docs/tutorials/service/governance/limiter hey地址&#xff1a;https://github.com/rakyll/hey1、压测工具hey下载安装&#xff1a; 会安装到GOPATH/bin目录下 go install github.com/ra…

AI未来会拥有人类的情感吗,情感计算领域进展如何?

AI在情感理解方面目前还处于相对初级的阶段,但已经有了一些令人鼓舞的进展。 一般来说,AI系统可以通过自然语言处理和计算机视觉技术来检测和分析人类的情感表现,但要真正理解背后的情感原因和动机还面临很大挑战。 目前在情感计算领域&#xff0c;研究者们已经取得了显著的进…

重生之“我打数据结构,真的假的?”--1.顺序表(无习题)

C语言中的顺序表详细总结 1. 概述 顺序表&#xff08;Sequential List&#xff09;是一种线性数据结构&#xff0c;用于存储具有相同数据类型的一组元素。顺序表采用一段连续的存储空间&#xff0c;使用数组来实现&#xff0c;能够高效地支持随机访问操作。在 C 语言中&#…

Unity--AssestBundles--热更新

使用Node.js搭建AssestBundle服务器并验证AB包热更新 一、服务器部分 使用NodeJs作为服务器&#xff0c; 使用Express为基础网页模版。 当然&#xff0c; 使用其他的FTP&#xff0c;http服务器也可以&#xff0c; 基础逻辑是存放资源的位置。 1.下载Node.js 下载地址:https…