作業系統:設計與實現-母本
2023 南京大學《作業系統:設計與實現》
課程主頁(含講義):https://jyywiki.cn/OS/2023/
【Python 实现操作系统模型 [南京大学2023操作系统-P4] (蒋炎岩)-哔哩哔哩】 https://b23.tv/jakxDbh
用Python实现操作系统模型讲义
一、操作系统基础概念
1.1 定义
操作系统(Operating System,OS)是管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。它负责管理系统的进程、内存、文件系统以及设备驱动等,为用户和其他应用程序提供一个方便、高效且安全的运行环境。
1.2 功能
- 进程管理:负责进程的创建、调度、终止等操作。进程是程序的一次执行过程,操作系统通过进程管理来实现多任务并发执行,提高系统资源利用率。
- 内存管理:管理计算机的内存资源,包括内存分配、回收以及内存保护等。确保各个进程能够安全、高效地使用内存。
- 文件系统管理:负责文件的存储、检索、修改和保护。文件系统提供了一种层次化的目录结构,方便用户和应用程序对文件进行管理和操作。
1.3 分类
- 批处理操作系统:用户将作业提交给系统操作员,系统操作员将多个作业组成一批,依次执行。适用于计算量大、不需要交互的任务。
- 分时操作系统:将CPU时间划分成时间片,轮流分配给各个交互型作业使用。用户可以通过终端与系统进行交互,及时获得响应。
- 实时操作系统:能在规定的时间内对外部事件做出响应,主要用于对时间要求严格的控制系统,如工业控制、航空航天等领域。
1.4 常见操作系统特点与应用场景
- Windows:具有图形化用户界面,易于使用,软件资源丰富,广泛应用于个人计算机和办公领域。
- Linux:开源、高度可定制,具有良好的稳定性和安全性,常用于服务器、云计算以及嵌入式系统等。
- macOS:基于Unix,拥有简洁美观的界面和良好的用户体验,主要应用于苹果公司的Mac系列电脑,在创意设计领域有较高的市场份额。
二、状态机概念及在操作系统中的应用
2.1 基本定义
- 状态(State):系统在某一时刻的状况,一个状态机可以包含多个状态。
- 状态转换(Transition):系统从一个状态转移到另一个状态的过程,通常由特定的事件触发。
- 事件(Event):能够引起状态转换的外部或内部刺激。
2.2 在操作系统中的应用场景 - 进程状态转换
- 就绪(Ready):进程已获得除CPU以外的所有必要资源,等待被调度执行。
- 运行(Running):进程正在CPU上执行。
- 阻塞(Blocked):进程因等待某一事件(如I/O操作完成)而暂时无法执行。
当进程被创建时,进入就绪状态;调度程序将就绪队列中的进程调度到CPU上执行,进程进入运行状态;运行中的进程如果需要等待I/O操作完成,会进入阻塞状态;当I/O操作完成后,阻塞的进程又会回到就绪状态。
三、Python语言基础
3.1 数据类型
- 整数(int):用于表示整数,如1、2、3等。
- 浮点数(float):用于表示小数,如1.23、3.14等。
- 字符串(str):用于存储文本数据,用单引号或双引号括起来,如'hello'、"world"。
- 列表(list):一种有序的可变序列,可以包含不同类型的数据,如[1, 'apple', 3.14]。
- 字典(dict):一种无序的键值对集合,用于存储和查找数据,如{'name': 'John', 'age': 25}。
3.2 基本语法
- 循环:使用
相关文章:
作業系統:設計與實現-母本
2023 南京大學《作業系統:設計與實現》 課程主頁(含講義):https://jyywiki.cn/OS/2023/ 【Python 实现操作系统模型 [南京大学2023操作系统-P4] (蒋炎岩)-哔哩哔哩】 https://b23.tv/jakxDbh 用Python实现操作系统模型讲义 一、操作系统基础概念 1.1 定义 操作系统(Oper…...
excel如何查找一个表的数据在另外一个表是否存在
比如“Sheet1”有“张三”、“李四”“王五”三个人的数据,“Sheet2”只有“张三”、“李四”的数据。我们通过修改“Sheet1”的“民族”或者其他空的列,修改为“Sheet2”的某一列。这样修改后筛选这个修改的列为空的或者为出错的,就能找到两…...
当AI学会“顿悟”:DeepSeek-R1如何用强化学习突破推理边界?
开篇:一场AI的“青春期叛逆” 你有没有想过,AI模型在学会“推理”之前,可能也经历过一段“中二时期”?比如,解题时乱写一通、语言混搭、答案藏在火星文里……最近,一支名为DeepSeek-AI的团队,就…...
(Java版本)基于JAVA的网络通讯系统设计与实现-毕业设计
源码 论文 下载地址: cc基于JAVA的网络通讯系统设计与实现(源码系统论文)https://download.csdn.net/download/weixin_39682092/90299782https://download.csdn.net/download/weixin_39682092/90299782 第1章 绪论 1.1 课题选择的…...
Deepseek的api调用报错乱码问题
最近的deepseek也是很火,但是在调用api的过程中也会出现一些大大小小的问题,所以这里也给出一种问题和他的解决方案,报错的类型如下图所示 API Streaming Failed Command failed with exit code 1: powershell (Get-CimInstance -ClassName W…...
STM32调试手段:重定向printf串口
引言 C语言中经常使用printf来输出调试信息,打印到屏幕。由于在单片机中没有屏幕,但是我们可以重定向printf,把数据打印到串口,从而在电脑端接收调试信息。这是除了debug外,另外一个非常有效的调试手段。 一、什么是pr…...
如何在本地部署deepseek r1模型?
DeepSeek(深度求索)正式发布了其最新推理模型DeepSeek-R1,引发业界广泛关注。这款模型不仅在性能上与OpenAI的GPT-4相媲美,更以其开源策略和创新的训练方法,为AI发展带来了新的可能性。DeepSeek-R1 在后训练阶段大规模…...
【MySQL】悲观锁和乐观锁的原理和应用场景
悲观锁和乐观锁,并不是 MySQL 或者数据库中独有的概念,而是并发编程的基本概念。 主要区别在于,操作共享数据时,“悲观锁”认为数据出现冲突的可能性更大,而“乐观锁”则是认为大部分情况不会出现冲突,进而…...
基于Flask的哔哩哔哩评论数据可视化分析系统的设计与实现
【Flask】基于Flask的哔哩哔哩评论数据可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统可以搜索查看作者、播放量、评论等相关信息,并将相关的分析…...
2218. 从栈中取出 K 个硬币的最大面值和
2218. 从栈中取出 K 个硬币的最大面值和 题目链接:2218. 从栈中取出 K 个硬币的最大面值和 代码如下: class Solution { public:int maxValueOfCoins(vector<vector<int>>& piles, int k) {vector<vector<int>> memo(pile…...
MySQL 用户相关的操作详解
MySQL 5.x 用户操作 创建用户 在 MySQL 5.x 中,使用 GRANT 语句创建用户并授权: 语法 GRANT ALL PRIVILEGES ON *.* TO usernamehost IDENTIFIED BY password;username:用户名 host:指定用户可访问的主机,例如 loca…...
YOLO目标检测4
一. 参考资料 《YOLO目标检测》 by 杨建华博士 本篇文章的主要内容来自于这本书,只是作为学习记录进行分享。 二. 环境搭建 (1) ubuntu20.04 anaconda安装方法 (2) 搭建yolo训练环境 # 首先,我们建议使用Anaconda来创建一个conda的虚拟环境 conda cre…...
ONES 春节假期服务通知
ONES 春节假期服务通知 灵蛇贺岁,瑞气盈门。感谢大家一直以来对 ONES 的认可与支持,祝您春节快乐! 「2025年1月28日 ~ 2025年2月4日」春节假期期间,我们的值班人员将为您提供如下服务 : 紧急问题 若有紧急问…...
DeepSeek异军突起,重塑AI格局
DeepSeek异军突起,重塑AI格局这两天AI 圈发生了比过年更令人兴奋的事情,“Meta内部反水事件”、“黄仁勋的底盘问题”,以及AI格局的大动荡,一切都是因为那个叫DeepSeek的“中国自主AI”!它由幻方量化开发,以…...
Redis部署方式全解析:优缺点大对比
Redis部署方式全解析:优缺点大对比 一、引言 Redis作为一款高性能的内存数据库,在分布式系统、缓存、消息队列等众多场景中都有着广泛的应用。选择合适的Redis部署方式,对于系统的性能、可用性、可扩展性以及成本等方面都有着至关重要的影响…...
Rust:如何动态调用字符串定义的 Rhai 函数?
在 Rust 中使用 Rhai 脚本引擎时,你可以动态地调用传入的字符串表示的 Rhai 函数。Rhai 是一个嵌入式脚本语言,专为嵌入到 Rust 应用中而设计。以下是一个基本示例,展示了如何在 Rust 中调用用字符串传入的 Rhai 函数。 首先,确保…...
关于使用微服务的注意要点总结
一、防止过度设计 微服务的拆分一定要结合团队人员规模来考虑,笔者就曾遇到过一个公司的项目,是从外部采购回来的,微服务划分为十几个应用,我们在此项目基础上进行自行维护和扩展。由于公司业务规模不大,而且二次开发的…...
【新春不断更】数据结构与算法之美:二叉树
Hello大家好,我是但凡!很高兴我们又见面啦! 眨眼间已经到了2024年的最后一天,在这里我要首先感谢过去一年陪我奋斗的每一位伙伴,是你们给予我不断前行的动力。银蛇携福至,万象启新程。蛇年新春之际…...
Linux环境基础开发工具的使用(apt, vim, gcc, g++, gbd, make/Makefile)
什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的…...
渗透测试之WAF规则触发绕过规则之规则库绕过方式
目录 Waf触发规则的绕过 特殊字符替换空格 实例 特殊字符拼接绕过waf Mysql 内置得方法 注释包含关键字 实例 Waf触发规则的绕过 特殊字符替换空格 用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格 这个方法也可以部分绕过最新版本的…...
新站如何快速获得搜索引擎收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/8.html 新站想要快速获得搜索引擎收录,需要采取一系列有针对性的策略。以下是一些具体的建议: 一、网站内容优化 高质量原创内容: 确保网站内容原创、…...
Harmony Next 跨平台开发入门
ArkUI-X 官方介绍 官方文档:https://gitee.com/arkui-x/docs/tree/master/zh-cn ArkUI跨平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS平台:目前支持OpenHarmony、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码…...
小阿卡纳牌
小阿卡纳牌 风:热湿 火:热干 水:冷湿 土:冷干 火风:温度相同,但是湿度不同,二人可能会在短期内十分热情,但是等待热情消退之后,会趋于平淡。 湿度相同、温度不同&#x…...
【llm对话系统】LLM 大模型Prompt 怎么写?
如果说 LLM 是一个强大的工具,那么 Prompt 就是使用这个工具的“说明书”。一份好的 Prompt 可以引导 LLM 生成更准确、更相关、更符合你期望的输出。 今天,我们就来聊聊 LLM Prompt 的编写技巧,掌握这把解锁 LLM 潜能的钥匙! 一…...
【现代深度学习技术】深度学习计算 | 参数管理
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
c++ 定点 new
(1) 代码距离: #include <new> // 需要包含这个头文件 #include <iostream>int main() {char buffer[sizeof(int)]; // 分配一个足够大的字符数组作为内存池int* p new(&buffer) int(42); // 使用 placement new…...
Myeclipse最新版本 C1 2019.4.0
Myeclipse C1 2019.4.0下载地址:链接: https://pan.baidu.com/s/1MbOMLewvAdemoQ4FNfL9pQ 提取码: tmf6 1.1、什么是集成开发环境? ★集成开发环境讲究-站式开发,使用这个工具即可。有提示功能,有自动纠错功能。 ★集成开发环境可以让软件开…...
使用 lock4j-redis-template-spring-boot-starter 实现 Redis 分布式锁
在分布式系统中,多个服务实例可能同时访问和修改共享资源,从而导致数据不一致的问题。为了解决这个问题,分布式锁成为了关键技术之一。本文将介绍如何使用 lock4j-redis-template-spring-boot-starter 来实现 Redis 分布式锁,从而…...
thinkphp6+swoole使用rabbitMq队列
安装think-swoole安装 composer require php-amqplib/php-amqplib,以支持rabbitMq使用安装rabbitMq延迟队列插件 安装 rabbitmq_delayed_message_exchange 插件,按照以下步骤操作: 下载插件:https://github.com/rabbitmq/rabbitmq-delayed-…...
大一计算机的自学总结:异或运算
前言 异或运算这个操作看上去很匪夷所思,实际上作用非常大。 一、异或运算的性质 1.异或运算就是无进位相加。 2.满足交换律、结合律。 3.0^nn,n^n0。 4.若集合B为集合A子集,集合A异或和为x,集合B异或和为y,则集…...
