06 2022 档案

摘要:11.1 系统虚拟化的优势 abstration是新接口,virtualization是旧接口新的abstration意味着新的接口,那么通信上层的软件就需要改了 在新接口和旧接口之间交替,如果上层趋于稳定,那么底层就可以更新,如果底层一直在更新,那么上层就会停止发展,所以早期很多体系不能确定os, 阅读全文
posted @ 2022-06-29 14:51 抿了抿嘴丶 阅读(96) 评论(0) 推荐(0) 编辑
摘要:week2 milestone1 unwrap()在Err时,直接panic,但是对于可以复用的函数,需要传播错误,也就是使用❓运算符 milestone2 flat vector应该是指降维的多维数组 week3 mod关键字会将同名.rs文件内容当作一个mod引入 milestone3 read 阅读全文
posted @ 2022-06-28 09:17 抿了抿嘴丶 阅读(52) 评论(0) 推荐(0) 编辑
摘要:12.1 Linux网络收包概述 linux网络驱动模型linxu内核中存在协议栈 linux收包过程,先是收目的地是自己的包,设置为混杂模式就可以接收所有的包,DMA拷贝到RX队列对于user buffer和socket 接收队列是在用户程序调用接收函数时自动申请的缓存 12.2 Linux网络包 阅读全文
posted @ 2022-06-27 15:56 抿了抿嘴丶 阅读(62) 评论(0) 推荐(0) 编辑
摘要:10.1 设备概述 每次敲键盘,会转换为电信号 串口UART 复用文件系统抽象来管理设备 设备分类:字符设备,块设备,网络设备用read/write对于字符设备抽象,用文件系统/mmap对于块抽象,用socket对于网络抽象(用read/write读写socket) linux中设备的抽象 字符设备 阅读全文
posted @ 2022-06-27 14:14 抿了抿嘴丶 阅读(54) 评论(0) 推荐(0) 编辑
摘要:9.1 基于inode的文件系统 文件系统是一种对于磁盘的组织形式,ext2存储布局由多个块组组成 一个inode表示一个文件 目录文件,目录项存储文件名到文件inode的映射 符号链接的内容就是路径 硬链接不是文件,而是在目录文件中多存一个目录项(dentry) 其他文件,比如字符/块设备文件FI 阅读全文
posted @ 2022-06-26 17:01 抿了抿嘴丶 阅读(29) 评论(0) 推荐(0) 编辑
摘要:8.1 临界区问题 os提供同步原语,防止共享资源的竞争错误 解决临界区问题三个要求,互斥访问,优先等待,空闲让进 8.2 互斥锁的软件实现与硬件实现 皮特森算法 关中断只能够解决单个CPU核上的临界区问题,但是多核不行 互斥锁还可以实现同步互斥访问intel通过锁总线实现原子的CAS对于任意地址的 阅读全文
posted @ 2022-06-25 22:06 抿了抿嘴丶 阅读(47) 评论(0) 推荐(0) 编辑
摘要:7.1进程间通信背景和基础 将一个应用实现为一个进程,非常冗余比如本来,两个进程本来可以共享数据库实现其次是比较低效,由于本来实现一个邮件应用本来应该只关注邮件任务逻辑,但是将完整的应用设计为一个应用,其数据库也需要自己设计最后是即使将一个应用设计为一个进程,仍然需要进程间通信,需要进程间共享 进程 阅读全文
posted @ 2022-06-24 22:10 抿了抿嘴丶 阅读(28) 评论(0) 推荐(0) 编辑
摘要:物理内存 以前的物理内存是可插拔的(功耗和性能会有影响),这些内存条一般是那些被CPU访问的内存现在的倾向是集成CPU和内存到一个芯片 早期计算机系统 早期计算机系统是单一定制的,不是通用的 多重编程时代 讲物理内存分用户使用,隔离性差 IBM 360内存隔离采用Protection Key 每一个 阅读全文
posted @ 2022-06-23 20:00 抿了抿嘴丶 阅读(96) 评论(0) 推荐(0) 编辑
摘要:https://github.com/rust-lang/rustlings variables3 rust中,没有限定符mut的变量是不可以重新赋值的 variables4 变量需要初始化才可以使用,没有零值 variables5 可以对变量使用shadowing可以用来来改变变量的类型 vari 阅读全文
posted @ 2022-06-21 22:39 抿了抿嘴丶 阅读(227) 评论(0) 推荐(0) 编辑
摘要:rust中的面向对象 rust中的linklist, node表示Option包含两个变体,其中None表示该节点没有后继了,Box是个smart pointer,并且其中包含的类型存放在堆中 其中usize表示链表中的节点个数 &引用在rust中就是指针,虽然cpp中本质上也是,使用.运算符时,其 阅读全文
posted @ 2022-06-11 21:21 抿了抿嘴丶 阅读(30) 评论(0) 推荐(0) 编辑
摘要:lecture note rust的struct中存在指向其他buffer的指针的时候,如果有人要去解引用一个指针,并且这个指针指向的buffer已经被释放了,对于ownership的分析而言,就会出现问题 函数传递ownership还是传递reference, 编译器在传递ownership的时候 阅读全文
posted @ 2022-06-11 12:52 抿了抿嘴丶 阅读(50) 评论(0) 推荐(0) 编辑
摘要:1 认识版本,header,重要资源 C++标准库主要是用模板,标准库大部分是STL(Standard Template Library),新式C header files,使用去掉.h,前面加上c旧式的header的组件不被封装于namespace std 标准库六大部件:分配器,迭代器(迭代器适 阅读全文
posted @ 2022-06-10 09:59 抿了抿嘴丶 阅读(41) 评论(0) 推荐(0) 编辑
摘要:一 操作系统概述 1.2 什么是操作系统 操作系统由两个职责: 对硬件进行管理和抽象 为应用提供服务并进行管理 狭义的os是指os内核与Shell,随着硬件种类和应用需要越来越丰富,大量的共性功能沉淀到os中 广义的os又分为os内核与os框架: os内核负责硬件资源的管理和抽象,为os框架提供基础 阅读全文
posted @ 2022-06-06 10:33 抿了抿嘴丶 阅读(119) 评论(0) 推荐(0) 编辑
摘要:learngitbranching git push -u origin main用来指定本地分支main与远程主机origin关联,如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push,· 主要 基础篇 Git Commit G 阅读全文
posted @ 2022-06-04 14:45 抿了抿嘴丶 阅读(87) 评论(0) 推荐(0) 编辑
摘要:为什么放弃cpp,选择rust 因为cpp存在大量的memory safety 空悬指针,返回指向栈中的变量的指针Rust编译器会对其做识别 double freeRust编译器保证一旦内存被释放,那么就不能够去使用该内存 访问已经释放的内存Rust编译器使得我们不能够去修改n指向的数据 内存泄漏这 阅读全文
posted @ 2022-06-03 19:35 抿了抿嘴丶 阅读(117) 评论(0) 推荐(0) 编辑
摘要:1.1 gets函数与栈帧 gets函数不安全 启动gdb rip寄存器存放的是下一条指令要执行的地址,rbp寄存中 1.1 内存安全问题与解决方式 gets函数在栈区留有的buffer,存在数据越界的问题,即使是专业的工程师也会出现类似的问题。 如何找到或者避免类似的安全问题? 动态分析,也就是测 阅读全文
posted @ 2022-06-02 14:46 抿了抿嘴丶 阅读(39) 评论(0) 推荐(0) 编辑
摘要:Cargo Cargo是Rust的构建系统与包管理工具 构建代码,下载依赖的库,构建这些库 toml是cargo的配置格式。Rust中代码的包称为crate。 如果创建项目时,没有使用cargo,可以将源代码移到src中 cargo check可以用来检查代码,确保通过编译,cargo check比 阅读全文
posted @ 2022-06-02 14:46 抿了抿嘴丶 阅读(625) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示