计算机基础--->操作系统(1)

news2025/4/28 14:39:43

文章目录

  • 简单说说操作系统
  • 操作系统的主要功能
  • 用户态和内核态
  • 为什么要有用户态和内核态?只有一个内核态不行吗?
  • 用户态和内核态是如何切换的
  • 系统调用
  • 系统调用过程

简单说说操作系统

操作系统是一种系统软件,它管理计算机硬件资源和提供服务给应用程序。操作系统执行如下任务:

  1. 管理计算机的内存、CPU、磁盘等硬件资源,以使不同程序和用户之间共享使用这些资源。
  2. 提供文件系统,让用户可以保存和访问文件和数据。
  3. 处理输入输出,例如接受用户输入,向屏幕显示信息,向打印机发送信息等。
  4. 提供网络服务,让计算机可以连接互联网或其他计算机进行通信。
  5. 提供安全保护,例如防火墙、加密和认证等,以保护计算机系统不受入侵和病毒的攻击。

不同类型的操作系统有不同的设计理念、特点和适用范围。最常见的操作系统包括Windows、MacOS、Linux等。

操作系统的主要功能

  1. 进程管理: 它能启动、暂停、恢复、停止进程,并提供进程间通信。
  2. 存储管理: 内存和外存的分配和管理。
  3. 文件管理: 文件的读、写、创建以及删除等。
  4. 设备管理: 管理输入和输出设备,它能够识别输入设备、发送输出信号,同时确保输入和输出的数据正确性和可靠性。
  5. 网络管理: 操作系统负责管理计算机网络的使用。网络是计算机系统中连接不同计算机的方式,操作系统需要管理计算机网络的配置、连接、通信和安全等,以提供高效可靠的网络服务。
  6. 安全管理: 用户的身份认证、访问控制、文件加密等,以防止非法用户对系统资源的访问和操作。

用户态和内核态

用户态和内核态是计算机系统中的两种模式,它们具有不同的权限和特点

用户态: 是指应用程序运行的模式,它是指进程在安全保护的环境下运行程序时所处的一种状态。在用户态中,进程可以直接读取用户程序的数据,应用程序只能访问自己的内存空间和限制好的操作系统资源,拥有的权限较低,比如说打开文件和申请内存等,而不能直接访问系统资源和内核代码。这样可以保证应用程序不能对整个系统进行破坏。当应用程序需要执行某些需要特殊权限的操作,就需要向操作系统发起系统调用请求,进入内核态。

内核态: 是指操作系统运行的模式,它几乎可以访问计算机的任何资源包括系统的内存空间、设备、驱动程序等,不受限制,拥有非常高的权限。当操作系统接收到进程的系统调用请求时,就会从用户态切换到内核态,执行相应的系统调用,并将结果返回给进程,最后再从内核态切换回用户态。

内核态相比用户态拥有更高的特权级别,因此能够执行更底层、更敏感的操作。不过,由于进入内核态需要付出较高的开销(需要进行一系列的上下文切换和权限检查),应该尽量减少进入内核态的次数,以提高系统的性能和稳定性。

为什么要有用户态和内核态?只有一个内核态不行吗?

在操作系统中,如果只有一个内核态,那么系统就可以访问系统所拥有的所有的资源,没有访问的限制,这样做虽然大大提高了操作的灵活性和效率,但是也带来了一系列的问题:

  1. 安全性问题: 在计算机系统中存在着大量的机密和敏感信息,操作系统必须采用措施保证数据和系统的安全性。如果一个程序可以访问系统中的所有资源,就很容易被黑客攻击或破坏者实现获取敏感信息或破坏系统。
  2. 资源管理问题: 在计算机系统中,各种应用程序同时运行,需要相当数量的硬件资源。如果只有一个内核态无法区分和管理应用程序所需的资源,很容易导致系统的崩溃和资源的枯竭。
  3. 提高效率: 为了使系统能够更加高效地运行,内核态可以高速执行一些可以允许的操作。但执行系统调用时一些重要的数据出现了错误,若没有用户态,意味着整个操作系统就会崩掉。

因此,同时具有用户态和内核态是为了保证计算机的安全性、稳定性和性能。

用户态和内核态是如何切换的

用户态和内核态的切换是通过系统调用来完成的。用户态的程序执行系统调用时,CPU会临时切换到内核态,访问完特权资源后,在返回到用户态继续执行程序。

用户态切换到内核态的 3 种方式:

  1. 系统调用(Trap):用户态进程 主动 要求切换到内核态的一种方式,主要是为了使用内核态才能做的事情比如读取磁盘资源。系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现。
  2. 中断(Interrupt):当外围设备完成用户请求的操作后,会向 CPU 发出相应的中断信号,这时 CPU 会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
  3. 异常(Exception):当 CPU 在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

在系统的处理上,中断和异常类似,都是通过中断向量表来找到相应的处理程序进行处理。区别在于,中断来自处理器外部,不是由任何一条专门的指令造成,而异常是执行当前指令的结果。

系统调用

系统调用是操作系统提供给用户程序的一种接口,通过它,用户程序可以请求操作系统提供各种服务。我们运行的用户程序中,凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。

在这里插入图片描述

系统调用是应用程序与操作系统之间进行交互的一种方式,通过系统调用,应用程序可以访问操作系统底层资源例如文件、设备、网络等。

系统调用过程

在这里插入图片描述

  1. 用户程序调用系统调用,传递相应的参数并触发系统调用指令。

  2. CPU将程序的控制流切换到内核态,操作系统接手程序的运行。

  3. 操作系统根据系统调用的类型和参数执行相应的内核代码,完成请求的服务。

  4. 操作系统将执行结果返回给用户程序,并将控制流切换回用户态。

  5. 用户程序继续执行,根据操作系统返回的结果继续运行。

  6. 用户态的程序发起系统调用,因为系统调用中涉及一些特权指令(只能由操作系统内核态执行的指令),用户态程序权限不足,因此会中断执行,也就是 Trap(Trap 是一种中断)。

  7. 发生中断后,当前 CPU 执行的程序会中断,跳转到中断处理程序。内核程序开始执行,也就是开始处理系统调用。

  8. 内核处理完成后,主动触发 Trap,这样会再次发生中断,切换回用户态工作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jenkins+Docker+SpringCloud微服务持续集成之集群部署

一、集群部署流程说明 环境配置 #环境配置 hostnamectl set-hostname web2-server && su systemctl stop firewalld systemctl disable firewalldvim /etc/selinux/config SELINUXdisabledvim /etc/resolv.conf nameserver 114.114.114.114#安装依赖包 yum install -y…

如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?

对于需要调用第三方支付的报名流程进行接口自动化测试,可以通过以下步骤来编写Python代码: 如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站百万播放全网第一的自动化测试教程,同时在线人数到达1…

微信小程序开发实战 ②③(全局数据共享)

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

Nginx:Nginx网站服务(一)

Nginx:Nginx网站服务 一、编译安装Nginx服务1.1 关闭防火墙,将安装nginx所需软件包传到/opt目录下1.2 安装依赖包1.3 创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地…

【全面突击数据结构与算法001】绪论篇,数据结构的基本概念

🍁前言 👑作者主页:👉CSDN丨博客园 🏆学习交流:👉在下周周ovoの社区 💎全面突击数据结构与算法系列专栏:👉数据结构与算法专栏 PS:本篇文章主要综…

【架构基础】简单设计原则

简单设计来源于极限编程(ExtremeProgramming,简称XP)。XP是由KentBeck在1996年提出的,是一种软件工程方法学,是敏捷软件开发中最富有成效的几种方法学之一。XP存在四个核心实践:TDD(Test-Driven…

Lecture 6 Sequence Tagging: Hidden Markov Models

目录 Problems with POS Tagging 词性标注的问题Probabilistic Model of HMM HMM的概率模型Two Assumptions of HMM HMM的两个假设Training HMM 训练HMMMaking Predictions using HMM (Decoding) 使用HMM进行预测(解码)Viterbi AlgorithmHMMs in Practic…

地震勘探基础(五)之地震资料数字处理

地震资料数字处理 地震勘探主要包括地震资料野外采集,地震资料数字处理和地震资料地质解释三大部分。其中地震资料数字处理需要利用高性能的超级计算机和先进的处理软件系统。地震资料的质量和成像精度直接决定了油、气勘探的成功率。 地震资料数字处理的主要目的…

快速解读GC日志

本文介绍GC日志的输出格式, 以及如何解读GC日志, 从中提取有用的信息。我们通过 -XX:UseSerialGC 选项,指定JVM使用串行垃圾收集器, 并使用下面的启动参数让 JVM 打印出详细的GC日志: -XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintGCTimeStamps 这样配置以后&#xff…

postgreSQL/kingbase limit分页查询,结果乱序

postgres/kingbase limit分页查询,结果乱序 现象排查总结解决办法1.session中关闭synchronize_seqscans2.查询时带上order by 现象 我使用kingbase8,使用select * from xx limit 0,1000 每次查出来的结果都不一样。 排查 1.由于kingbase的文档较少&am…

Zinx框架学习 - 读写协程分离

Zinx - V0.7 读写协程分离 之前connection使用StartReader对客户端的数据接下来我们就要对Zinx做⼀个⼩⼩的改变,就是与客户端进修数据交互的Gouroutine由⼀个变成两个,⼀个专⻔负责从客户端读取数据,⼀个专⻔负责向客户端写数据。这么设计有…

Vue3 | Element Plus resetFields不生效

Vue3 | Element Plus resetFields不生效 1. 简介 先打开创建对话框没有问题&#xff0c;但只要先打开编辑对话框&#xff0c;后续在打开对话框就会有默认值&#xff0c;还无法使用resetFields()重置。 下面是用来复现问题的示例代码和示例GIF。 <script setup> import…

javascript基础二十一:说说你对BOM的理解,常见的BOM对象你了解哪些?

一、是什么 BOM (Browser Object Model)&#xff0c;浏览器对象模型&#xff0c;提供了独立于内容与浏览器窗口进行交互的对象 其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退&#xff0c;前进&#xff0c;刷新&#xff0c;浏览器的窗口发生变化&#xff0c;滚动条…

Redis入门到实战笔记-Java客户端

这里写目录标题 哪些好用的客户端Jedis连接池 Spring Data Redis依赖修改默认序列化方式修改序列化代码&#xff1a;反序列化方式 哪些好用的客户端 Jedis 依赖&#xff1a; <dependency><groupId>redis.clients</groupId><artifactId>jedis</artif…

原来!自动化测试项目--的完整测试流程是这样的……

目录 需求分析&#xff1a; 整体流程图&#xff1a; 分析流程&#xff1a; 测试设计&#xff1a; 测试分析&#xff1a; 测试设计&#xff1a; 用例设计&#xff1a; 用例执行和回归 用例执行标准 bug回归标准 补充用例 质量分析 bug定位 前端定位&#xff1a; …

Axios后端程序员快速入门简述

axios 它的底层是用了 XMLHttpRequest&#xff08;xhr&#xff09;方式发送请求和接收响应&#xff0c;xhr 相对于之前讲过的 fetch api 来说&#xff0c;功能更强大&#xff0c;但由于是比较老的 api&#xff0c;不支持 Promise&#xff0c;axios 对 xhr 进行了封装&#xff0…

qt5.15.2 配置 android

第一步 安装jdk&#xff0c;最好安装 jdk11&#xff0c;因为他是与qt5.15.2这个能匹配上的 右击电脑&#xff0c;选择属性&#xff0c;选择高级系统设置&#xff0c;选择环境变量。 点击新建&#xff0c;变量名为JAVA_HOME,变量值为java安装的路径。我的如下图 JAVA_HOME D:\P…

Lecture 4 Text Classification

目录 Classification 分类Text Classification Tasks 文本分类任务Topic Classification 主题分类Sentiment Analysis 情感分析Native-Language Identification 母语识别Natural Language Inference 自然语言推理 Building a Text Classifier 构建文本分类器Choosing a Classif…

JDK、Tomcat、Redis、MySQL集齐,教你如何搭建高效性能测试项目!

目录 前言&#xff1a; 1. JDK 的安装 2. Tomcat 的安装 3. Redis 环境搭建 4. 数据库的安装 5. WEB 项目搭建 6. 性能测试 7. 总结 前言&#xff1a; 作为一个软件工程师&#xff0c;怎能不知道如何搭建一个性能测试项目呢&#xff1f;性能测试是一个软件工程师不可或…

【Python从入门到进阶】23.urllib使用post请求百度翻译

接上篇《22、urllib库基本使用》 上一篇我们介绍了实现爬虫的必备基础——urllib库的学习。本篇我们来使用urllib实现百度翻译的效果。 一、在线翻译服务 当我们需要翻译一段文字时&#xff0c;百度翻译是一个很常用的工具。它是由百度公司开发的一款在线翻译服务&#xff0c…