avatar
文章
79
标签
21
分类
15
Home
Archives
Categories
Tags
Hymns
搜索
Home
Archives
Categories
Tags

Hymns

049-data-structure-and-algorithm-learning
发表于2024-11-19|learning
数据结构与算法是计算机科学的基础,是解决实际问题的关键。 书籍 《大话数据结构》 网站 Hello 算法
048-今天换页机制是否仍然有必要
发表于2024-11-18|操作系统
...
047-操作系统上下文切换
发表于2024-11-15|操作系统
在操作系统中,上下文切换(Context Switch)指的是将 CPU 从一个进程或线程切换到另一个进程或线程的过程。这一机制使得多任务操作系统可以在多个任务之间来回切换,实现“并发”运行。 1. 上下文切换的目的上下文切换是多任务操作系统的核心特性,使得多个进程或线程可以共享 CPU 时间,从而提升系统资源的利用率和用户的使用体验。通过快速切换,操作系统在表面上呈现出多个程序同时运行的效果(即并发)。 2. 上下文切换的过程上下文切换主要涉及三个步骤: 保存当前任务的上下文:将当前正在执行的任务的状态(称为上下文)保存到它的控制块(PCB 或 TCB)中。上下文信息包括 CPU 寄存器、程序计数器、堆栈指针等,它们表示当前任务的执行状态。 加载新任务的上下文:从新的任务的控制块中读取其保存的上下文信息,恢复到 CPU 寄存器,以便新任务从中断点或挂起位置继续执行。 执行调度策略:操作系统调度器决定下一个要运行的任务。它根据调度算法(例如时间片轮转、优先级调度等)选择下一个任务,并执行上下文恢复。 3....
046-异常和中断的区别
发表于2024-11-15|操作系统
在程序设计和操作系统中,异常和中断都是用来处理异常情况或外部事件的机制,但它们的触发方式、目的以及处理机制有所不同。 异常和中断的区别 1. 触发方式 异常:由程序内部的指令导致。例如除零、非法访问内存、无效的操作码等。异常通常是在指令执行过程中由 CPU 检测并报告给操作系统。 中断:由外部设备或系统事件触发。例如定时器中断、I/O 设备中断、外设请求等。中断信号通常来自硬件,告诉 CPU 有紧急事件需要处理。 2. 目的 异常:主要用于报告和处理程序运行中的错误或意外情况,以便让操作系统或程序决定如何应对。 中断:用于响应硬件事件或定期执行某些任务,比如键盘输入、网络数据到达等,让操作系统能够及时处理硬件请求。 3. 处理机制 异常处理:异常通常会暂停当前指令执行,保存程序状态,并进入异常处理程序。异常处理程序可能会执行错误恢复、进程终止、日志记录等操作。 中断处理:中断信号到达后,CPU 保存当前执行状态并跳转到对应的中断服务程序(ISR)。中断处理程序一般尽量短小高效,快速处理硬件请求后,返回继续执行被中断的程序。 4....
045-operate-system-learning
发表于2024-11-15|learning
操作系统是计算机系统的核心软件,负责管理硬件资源、提供系统服务、支持应用程序运行,并协调多任务和多用户之间的交互。 操作系统书籍 《现代操作系统:原理与实现》
044-websocket和http的区别
发表于2024-11-15|计算机网络
WebSocket 和 HTTP 是两种不同的通信协议,它们各自有不同的特点和使用场景。以下是它们的主要区别: 连接方式: HTTP:基于请求-响应模型,客户端发送请求,服务器响应后连接关闭。每次通信都需要重新建立连接。 WebSocket:是一种全双工协议,在初始握手阶段通过 HTTP 连接建立。握手完成后,连接会升级为 WebSocket,保持长期连接,支持实时双向通信。 通信模式: HTTP:基于无状态、单向的短连接通信。客户端只能主动向服务器发送请求,服务器只能被动响应。 WebSocket:支持双向通信,允许客户端和服务器之间主动发送和接收数据,适合实时数据更新。 连接保持: HTTP:默认短连接(除非使用 HTTP/1.1 的 keep-alive),在一次请求-响应完成后会断开连接。 WebSocket:连接一旦建立,将一直保持打开状态,直到客户端或服务器主动断开。 数据传输效率: HTTP:每次请求都会发送完整的 HTTP...
043-CMake和MinGW的关系
发表于2024-11-15|c++
CMake 和 MinGW 的关系让我为你解释 CMake 和 MinGW 的关系: CMake CMake 是一个跨平台的构建系统生成器 它不直接编译代码,而是生成其他构建系统使用的文件,比如: Windows 上的 Visual Studio 项目文件 Unix 上的 Makefile MinGW 的 Makefile MinGW MinGW (Minimalist GNU for Windows) 是一个编译工具链 包含以下核心组件: gcc (编译器) g++ (C++编译器) mingw32-make (Make 工具) 其他 GNU 工具 它们的关系 配合使用 CMake 生成 Makefile MinGW 的 mingw32-make 读取 Makefile 并调用 gcc/g++ 进行实际的编译 工作流程 1CMakeLists.txt --[CMake生成]--> Makefile --[MinGW执行]--> 可执行文件 实际例子: 12345# 使用 CMake 生成 Makefilecmake -G...
042-network-learning
发表于2024-11-14|learning
计算机网络学习资料 计算机网络书籍 《网络是怎样连接的》 网站 图解网络 - 小林 coding
041-c++ learning
发表于2024-11-14|learning
自用 c++ 学习资料 c++书籍 《c++ primer 5th》 《Effective c++》 《Effective modern c++》中文 《Google c++ style guide》中文, 英文 《C++ Concurrency in Action》 网站 cppreference 中文, 英文 c++库 boost awesome-cpp 开源 C++ 库- cppreference 工具 header c++在线编译 c++数据类型 c++数据类型转换 博客 c++学习路线 c++那些事-光城 现代 c++教程-changkun 博客园-c++ 常用...
040-c++递归互斥锁、lock_guard和unique_lock
发表于2024-11-14|c++
std::recursive_mutex可以在同一个线程中嵌套使用。介绍了 lock_guard 和 mutex 是什么关系, lock_guard 和 unique_lock 的区别 std::recursive_mutex是一种递归锁,它允许同一线程多次加锁而不会导致死锁。在使用普通的std::mutex时,同一线程如果多次尝试加锁会造成死锁;而std::recursive_mutex则不会。它会跟踪当前线程的加锁次数,并在解锁时,只有当解锁次数与加锁次数相同时,锁才会真正释放。 以下是一个简单的示例,展示了如何在同一线程中嵌套使用std::recursive_mutex: 123456789101112131415161718192021222324#include <iostream>#include <mutex>#include <thread>std::recursive_mutex mtx;void recursiveFunction(int count) { if (count <= 0)...
1…345…8
avatar
Hymns
文章
79
标签
21
分类
15
Follow Me
公告
This is my Blog
最新文章
079-ClouDNSandCloudflare_mailtransfer2025-03-20
078-vscode搜索最大显示19999+2025-03-06
077-cpp类成员变量的声明顺序2025-02-28
076-格式化字符串参数2025-02-26
075-排序算法2025-02-12
分类
  • Linux4
  • c++25
  • docker1
  • git3
  • learning5
  • vscode1
    • cursor1
  • 博客4
标签
现代c++ 计算机网络 域名 博客 c++11 图床 Linux 编译 工具 git c++17 rss debug wsl2 vscode rust docker c++ 操作系统 设计模式 开箱即用
归档
  • 三月 2025 2
  • 二月 2025 6
  • 一月 2025 4
  • 十二月 2024 8
  • 十一月 2024 35
  • 十月 2024 11
  • 九月 2024 2
  • 六月 2024 11
网站信息
文章数目 :
79
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2024 - 2025 By Hymns
框架 Hexo|主题 Butterfly
搜索
数据加载中