avatar
文章
23
标签
0
分类
0

Home
Archives
About
Tech_Islet
Home
Archives
About

Tech_Islet

Operating System Concepts: Memory Management
发表于2025-05-19
In the foregoing chapters we actually discussed about CPU sharing among processes. If we want to execute a process, it should be first loading into memory, so the memory will be shared by other processes simultaneously to allow multiprogramming. In chapter 8 and chapter 9, we will focus on memory sharing. Memory-management Algorithms Contiguous Memory Allocation In contiguous memory allocation, each process (OS process or user process) is contained in a single section of memory that is contigu ...
6.s081 Lab: System Calls
发表于2025-05-15
Before you start coding, read Chapter 2 of the xv6 book, and Sections 4.3 and 4.4 of Chapter 4, and related source files. Using GDB 这一小节主要是通过故意修改syscall.c中的 syscall 编号为 *(int*)0发生 kernel panic,以此学习 GDB 的基础用法。查看 kernel 虚拟内存映射关系可以知道 0x00 这个位置根本没有映射到物理内存的页,因此读取这个内存虚拟地址的数据会发生缺页(page fault)。 寄存器a3保存 num 变量的值,在 0x80002052 (kernel code)如我们所愿地通过 0(zero)变址寻址到 0x00,发生 page fault。关于缺页错误处理我没有继续 trace 下去,这个任务留到之后的实验中(traps)。 System call tracing In this assignment you will add a system call tracing fe ...
6.s081 Lab: Xv6 and Unix utilities
发表于2025-05-06
sleep Implement a user-level sleep program for xv6, along the lines of the UNIX sleep command. Your sleep should pause for a user-specified number of ticks. A tick is a notion of time defined by the xv6 kernel, namely the time between two interrupts from the timer chip. 实验要求实现一个 sleep 命令行命令sleep.c,在实现中调用的int sleep(int)是 xv6 提供的 sleep syscall 的系统调用封装,通过链接user/usys.S跳转到实际内核代码的实现sys_sleep: 12345.global sleep ; 声明 sleep 为全局符号,可供外部调用sleep: ; 函数入口 li a7, SYS_sleep ; 将系统调用 ...
SYSU W4terCTF 2025
发表于2025-04-28
Hack for fun not for profit_ 以下是我在 Team Nooob 队伍中负责的题目。 签到问卷 周一12点开赛,下午边上课边做,拿下队伍首血 😃 这道题把 flag 硬编码或直接包含在客户端可以获取的初始化数据中。虽然题面描述了截止时间错误和提交后提示语,看起来像是需要完成提交或绕过时间检查,但实际上,Flag 并没有被动态生成或在提交后才从服务器返回。 真正的解题路径是: 识别 页面加载时获取的关键初始化数据(通常在 script 标签或通过 AJAX 请求获取)。 解码 数据(如果被编码)。 分析 解码后的数据结构,寻找与问卷状态、流程控制或结束/成功提示相关的字段。 直接 在相关的字段值中查找 Flag。 end_of_survey 字段恰好就承担了“问卷结束时显示的提示语”的角色,并且 LilRan “不小心”将 Flag 直接放到了这里,而不是在触发显示后才动态加载或生成。因此,绕过提交或时间检查的复杂步骤变得不必要,Flag 直接通过分析页面初始化数据就获取到了。 管理员的密码 WireShark分析流量包中用户登录成功的报文,找到 ...
Operating System Concepts: Synchronization
发表于2025-04-20
Concurrence Control Multiprogramming introduces the possibility of concurrent execution, and if concurrent execution is not properly managed in terms of accessing shared resources (process communication), it can lead to race conditions. To avoid race conditions, synchronization mechanisms such as locks or semaphores are required. However, if these mechanisms are used improperly (e.g., inconsistent lock acquisition order), they may result in deadlock. Mutual Exclution & Synchronization Mutu ...
为什么应用程序是特定于操作系统的
发表于2025-04-15
看视频看到了一个很有意思的问题:Why applications are operating-system specific? 观点看法 对于这个问题,我的能想到答案便是 syscalls 。尽管机器的架构可能是相同的(即应用程序被编译为同一指令集),但应用并非直接与硬件交互,它们之间存在了一个中间层——操作系统。应用在 user mode 下只能执行有限的计算指令,而为了使用 I/O 设备、内存、文件系统等软硬件资源,必须调用 OS 提供给用户的 API,即 system calls,将控制转移给 OS,CPU 切换为 kernel mode,执行写死的 syscall 内核代码并返回结果给应用。 不同操作系统提供的 syscalls 有很大的不同。以 Windows 和 Unix/Linux 的创建进程的系统调用为例: 在 Win 的 API 下,进程调用CreateProcess()创建一个进程执行指定的可执行文件 Unix/Linux 下,进程调用fork()仅复制了进程本身,为了加载执行程序还需调用exec() 实现的不同导致 syscall 的行为不同,也就无法实现应 ...
Go协程与通道机制
发表于2025-04-07
Don’t communicate by sharing memory; share memory by communicating. Goroutine goroutine 与 thread 在 Go 中,应用程序并发处理的部分被称作 goroutines,它可以进行更有效的并发运算。协程由 Go 运行时 (runtime) 创建,和操作系统线程之间并无一对一的关系(user-kernel thread 映射模型):协程是根据一个或多个线程的可用性,映射(多路复用)在他们之上的。 协程调度器在用户态上对 goroutines 进行管理,采用 M:N 调度模型(M 个 Goroutine 映射到 N 个线程),可以用GOMAXPROCS(逻辑处理器数量)来控制 N 的数量。相比之下,线程是由操作系统内核进行管理和调度的,被操作系统调度器分配到不同的处理器核心上运行。由于没有内核的介入,协程的创建与切换的开销降低很多。具体来说,Go 采用协作式调度(通过  Gosched()  或 channel阻塞主动让出 CPU ),而线程则是由 OS 进行抢占式调度(RR, FCFS, … ...
Operating System Concepts: Process Scheduling
发表于2025-02-28
Attenion: we use process scheduling when discussing general scheduling concepts. Key Objects Introduce CPU-scheduling (object, method, criteria) List some common CPU-scheduling algorithms Q: Why we address CPU-scheduling instead of scheduling itself? A: Scheduling of this kind is a fundamental operating-system function. Almost all computer resources are scheduled before use. Basic Scheduling Concepts Preemptive and Nonpreemptive Scheduling 1. Preemptive Scheduling Definition: In preem ...
2024-1学习思考点滴汇总
发表于2025-01-15
Preface 我很喜欢姜夔诗《暗香》中的一句词:“等恁时、重觅幽香,已入小窗横幅”。身处在许多个“当时”的我并未能很好地把握好当下,诚然这有时间的局限性的原因,没法以全局的视角统筹好每一步,但我是可以做到的是不懈坚持与难以被外界干扰所消磨的热爱呀。“年年陌上生秋草”,待到回首,感觉自己并没有做什么,实现什么。可是再一步步往前看,却这学期的收获是要比上学期多得多的,但遗憾的还是没能完成自己制定好的计划和目标。 以下汇总了我在每日学习中的一些疑问与思考,它们对我来说意义重大,是我这一学期一点一滴收集起来的困惑、灵感与喜悦。我将它们按照特定的话题分类,在我以后有同样疑问时能快速地找回以前的答案,同时也不断以此不断勉励自己——不断思考、保持热爱! 软硬件技术 How the web works 实用的例子: How the web works - Learn web development | MDN (mozilla.org) 网站是如何构建起来的?bilibili Principle of portability characteristic in Electron 从 Ele ...
Standford CS144 Lab 3
发表于2024-12-12
前言 时隔一个月又重新回到了 CS144 的实验当中,之所以做得如此之慢,主要原因还是自己能力不够(菜是原罪)。有时以为自己从“感性认知”上升到了“理性认知”,但将其运用到实践中时才发现,原来我还是什么都不懂,依旧停留在发展阶段。技术债方面,花了一周多补了 Git 的理论操作;知识债方面,还在继续边做实验边通过自顶向下复习(甚至可以说是学习)。认知和实践是无法割裂开来的,学习也是如此。同时也要认识到认知、理论和实践都具有时间局部性,唯一不变的就是“变”,惟其如此,才需要认知,实践,再认知,再实践。 实验概述 实验一开始我并没有对这个结构图有比较清晰的认识,但做到后面慢慢地发现它实在是精炼地描绘了整个 TCP Socket。 由于 TCP 是全双工的 (bidiretional),所以在 TCP 连接的发起方(发送方)以及连接的响应方(接受方)都是有Sender和Reciever两个部件的,不过为了简化讨论,就暂且称前者为发送方而后者为接收方。在 Lab1 和 Lab2 中我们实现了Receiver部件,在 Lab3 中我们就将实现Sender部件。 Sender 部件 以下介绍 ...
123
avatar
蘋末风
随缘更各种杂七杂八的东西
文章
23
标签
0
分类
0
最新文章
Operating System Concepts: Memory Management2025-05-19
6.s081 Lab: System Calls2025-05-15
6.s081 Lab: Xv6 and Unix utilities2025-05-06
SYSU W4terCTF 20252025-04-28
Operating System Concepts: Synchronization2025-04-20
归档
  • 五月 20253
  • 四月 20254
  • 二月 20251
  • 一月 20251
  • 十二月 20242
  • 十一月 20241
  • 十月 20241
  • 九月 20241
框架 Hexo|主题 Butterfly