avatar
Articles
288
Tags
201
Categories
0

karr's blog
Search

karr's blog

从栈切换的角度理解进程和协程
Created2024-07-22
函数在执行时,会在栈上创建栈帧,并将执行的上下文保存在栈帧中。栈切换在计算机系统设计中发挥着重要作用,特别是在并发程序中。多进程或多线程程序可以并发执行,充分利用多CPU 多核的计算资源,从而显著提升应用程序性能。理解进程和线程的切换过程对于优化并发程序至关重要。 操作系统为了避免频繁进入内核态,会将许多工作尽量放在用户态中进行。深入理解内核态和用户态的含义及其影响,有助于评估操作系统进入内核态的开销。实现这些切换的关键在于对执行单元的上下文环境进行切换,而这正是由栈这一核心数据结构支撑的。 掌握协程的基本知识有助于在使用各种协程库时理解其内部机制,进而编写出正确的 IO程序。同时,深入理解操作系统的用户态和内核态转换,对于架构设计中正确评估操作系统的性能开销也至关重要。在讨论执行单元的切换与栈的关系之前,需要给出它的准确定义。 什么是执行单元执行单元是指 CPU 调度和分派的基本单位,它是一个 CPU 能正常运行的基本单元。执行单元是可以停下来的,只要能把 CPU状态(其实就是寄存器的值)全部保存起来,等到这个执行单元再被调度的时候,就把状态恢复过来就行了。我们把这种保存状态,挂起, ...
python 协程详解
Created2024-07-21
Python中的协程经历了很长的一段发展历程。其大概经历了如下三个阶段 最初的生成器变形yield/send 引入@asyncio.coroutine和yield from 在最近的Python3.5版本中引入async/await关键字 协程是什么协程,又称微线程,纤程。英文名Coroutine,是一种用户态的轻量级线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置。 寄存器上下文和栈保存到其他地方 线程和进程的上下文切换是由内核管理的。协程则是在用户态下运行,它不依赖于内核的调度,而是由用户程序自行管理。因此,协程的上下文保存和恢复通常是由程序库(如 Python 的 asyncio 或 Go 的 goroutine 库)来处理的。 具体来说,协程的上下文和栈保存位置可以是 程序的堆内存:协程上下文和栈信息通常会保存在程序的堆内存中。每个 ...
系统的用户态与内核态
Created2024-07-21
用户态和内核态的定位用户态和内核态的区分是在操作系统层面进行的。这两种状态是操作系统为了安全和管理而设计的。在操作系统中,内核态(Kernel Mode)是运行操作系统程序、操作硬件的状态,具有最高权限;而用户态(User Mode)是运行用户程序的状态,其权限受到限制。当用户程序需要操作系统帮助完成某些它没有权力和能力完成的工作时,就会通过系统调用陷入到内核态,由操作系统来完成相应的工作。 用户态用户态也被称为用户模式,是指应用程序的运行状态。在这种模式下,应用程序拥有有限的系统资源访问权限,只能在操作系统划定的特定空间内运行。用户态下运行的程序不能直接访问硬件设备或执行特权指令,所有对硬件的访问都必须通过操作系统进行。在用户态下,应用程序通过系统调用来请求操作系统提供的服务。例如,文件操作、网络通信等都需要通过系统调用来实现。当应用程序发出系统调用时,会触发上下文切换,将CPU的控制权交给操作系统内核,进入内核态。 内核态内核态也被称为内核模式或特权模式,是操作系统内核的运行状态。处于内核态的CPU可以执行所有的指令,访问所有的内存地址,拥有最高的权限。内核态下运行的程序可以访问系 ...
一个非常主流的web项目包结构-java
Created2024-07-16
1234567891011121314151617181920212223242526272829303132333435363738io +- github +- xxyopen +- novel +- NovelApplication.java -- 项目启动类 | +- core -- 项目核心模块,包括各种工具、配置和常量等 | +- common -- 业务无关的通用模块 | | +- exception -- 通用异常处理 | | +- constant -- 通用常量 | | +- req -- 通用请求数据格式封装,例如分页请求数据 | | +- resp -- 接口响应工具及响应数据格式封装 | | +- util -- 通用工具 | | ...
vue3强制更新dom
Created2024-07-13
12345import {getCurrentInstance, ComponentInternalInstance} from 'vue'const update = getCurrentInstance() as ComponentInternalInstance | nullupdate!.proxy!.$forceUpdate()
内嵌iframe去除白色边框和设置全屏占满
Created2024-07-12
12345678<iframe id="reportIframe" frameborder="0" scrolling="auto" style="width: 100%; height: 100%" :src=""/>
iframe内嵌页面,监听iframe内容高度dom跨域问题
Created2024-07-12
運用 postMessage 解決 iframe 與父層溝通的問題 问题描述当在iframe的父级监听iframe中的内容时候,如果内嵌的路由与父级的源不一致,会出现跨域问题。出现如下报错信息: 12345const iframe = document.querySelector("iframe");iframe.onload = () => { const iframeInner = iframe.contentWindow; console.log(iframeInner);}; 12Uncaught DOMException: Failed to read a named property 'document' from 'Window': Blocked a frame with origin "http://localhost:1024" from accessing a cross-origin frame. at eval ( 基於同源政策,如果 ...
python 操作 ftp
Created2024-07-10
ftp_manager.py 123456789101112131415161718192021222324252627282930313233343536373839404142434445from ftplib import FTPclass FtpManager: host = "" username = "" password = "" def __init__(self): """连接到 FTP 服务器""" self.ftp = FTP(self.host) # 替换为你的 FTP 服务器地址 self.ftp.login(user=self.username, passwd=self.password) # 替换为你的用户名和密码 def list_files(self): """列举目录中的所有文件""" ...
manager -- 通用业务处理层
Created2024-07-10
manager – 通用业务处理层,对第三方平台封装、对 Service 层通用能力的下沉以及对多个 DAO 的组合复用
mysql text 类型长度
Created2024-07-10
类型 最大长度 备注 TINYTEXT 256 bytes TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB LONGTEXT 4,294,967,295 bytes ~4GB
1…456…29
avatar
karr
世界那么大,我想去看看。
Articles
288
Tags
201
Categories
0
gitee
Announcement
This is my Blog
Recent Post
Git报错: Failed to connect to github.com port 443 解决方案2025-03-30
AI Agent 系统架构图2025-03-28
固定整个页面只有100%的高度,不能进行下拉,当组件的内容超过100%时候在个自组件内部加上滚动条2025-03-12
html保证背景色铺满整个页面2025-03-12
importlib.import_module强制从文件加载2025-03-07
Tags
vue3 滚动 错误码 GROUP BY hexo java jwt 抖音 filter 架构 gap lock 前端 opencv Windows unicode Android Studio javascript 优化 vue 救猫咪 react-props-warning json_extract uvicorn 线程 图片去重 JSON mysqlclient npm Mutable go aiohttp rewrite 疫情防控 操作系统 滚动条 OTP 无人机 ORM text css
Archives
  • March 20256
  • February 20252
  • January 20253
  • November 20242
  • October 20243
  • September 20247
  • August 202410
  • July 202423
Info
Article :
288
UV :
PV :
Last Update :
©2024 - 2025 By karr
Framework Hexo|Theme Butterfly
Search
Loading the Database