操作系统
文章平均质量分 58
薛定谔的智能
这个作者很懒,什么都没留下…
展开
-
指令与条件码
一.ALU:算数逻辑单元ALU从寄存器中读取数据后,执行相应的运算,在返回目的寄存器rdx中.简单示例如下图当然ALU除了执行算术和逻辑运算指令以外,还会根据运算结果去设置条件码寄存器.二.条件码寄存器:长度为单个比特位CF检测溢出,ZF检测零也就是说a+b结果为1, ZF为0,其他类似相应c代码与汇编例子:三.嵌套数组:地址计算:xd起始地址,L表示数据类型T的大小,对于int就是...原创 2022-05-22 16:46:10 · 2637 阅读 · 1 评论 -
程序的机器级表示
一.生成汇编:1)对于c gcc -S mstore.c2)对于cpp:g++ -Smstore.cpppushq: 将寄存器rbx的值压入程序栈进行保存movq:寄存器rbx的值与rdx的值一致,都是dest指针所指向的内存地址popq:在函数返回前,恢复rbx的内容ret:函数返回intel64位处理器包含16个通用目的的寄存器,这些寄存器用来存放整数数据和指针.如图下调用者保存寄存器和被调用者保存寄存器,例如函数A调用函数B,B中rbx寄存器被修改...原创 2022-05-15 16:28:28 · 435 阅读 · 0 评论 -
CSAPP--浮点数
一.定点表示小数缺点:表示不了很大的数二.IEEE关于浮点数表示法float32:符号位1位,阶码字段:8位,小数点为23位float32:符号位1位,阶码字段:11位,小数点为52位三.浮点数的数值类型1.规格化值2.非规格值3.特殊值而阶码的值决定其属于那一类当阶码的二进制不为0和255时,表示规格化值;当阶码的二进制全为0时,表示非规格化值;当阶码的二进制全为1时,表示特殊化值,其包含两类一类是无穷大或无穷小,一类不是一个数(..原创 2022-03-20 11:52:34 · 421 阅读 · 0 评论 -
CSAPP--整数的运算
一.无符号数加法运算二.有符号数加法运算三.无符号数乘法截断w位也就是对2\w取模参考:【合集】CSAPP-深入理解计算机系统_哔哩哔哩_bilibili原创 2022-03-13 23:01:11 · 376 阅读 · 0 评论 -
CSAPP--整数的表示
非负数编码:负数编码(采用补码即原码取反+1):故对于四位补码,最大值为7,最小值为-8所以各类型负数/非负数范围:不同字节无符号最大值不同字节有符号最大值不同字节有符号最小值例子:这是因为虽然位模式不变,但是解释位的方式改变了。...原创 2022-03-06 11:29:26 · 168 阅读 · 0 评论 -
CSAPP--信息的表示与处理
虚拟地址空间:大多数 Intel 兼容机采用小端模式,IBM 和 Sun 公司的机器大多数机器采用大端法。对于很多新的处理器,支持双端法,可以配置成大端或者小端运行。例如基于 ARM架构的处理器,支持双端法,但是 Android 系统和 iOS 系统却只能运行在小端模式.下面是代码测试,获取16进制表示:#include <stdio.h>#把指针看成指向一个字节的序列,而不是对象的原始数据类型typedef unsigned char * byte_p..原创 2022-02-20 16:02:15 · 290 阅读 · 0 评论 -
CSAPP-计算机漫游
一.编译系统的工作流程:test.cpp#include <iostream>using namespace std;int main(){//hahhacout<<"hello world"<<endl;return 0;}直接生成可执行程序testg++ -o test test.cpp深入解析生成可执行程序test的过程1.g++ -E test.cpp > test.i这一步生成test.i进行预处理,.原创 2021-12-11 21:24:18 · 588 阅读 · 0 评论 -
操作系统--内核级线程实现
五段论 `:进入内核靠的是中断,fork是创建系统进程调用,进程由资源+执行序列组成,而创建执行序列其实就是创建线程.TSS:任务结构段 参考:操作系统_哈尔滨工业大学_中国大学MOOC(慕课)哈工大操作系统实验(二)系统调用...原创 2021-11-14 18:29:30 · 183 阅读 · 0 评论 -
操作系统--用户级线程与内核级线程
一.多进程是操作系统基本图像二.线程2.1线程引入可以切指令不切表,也就是资源不动,指令执行分开,更加轻量化,从而提高效率,保留并发优点,避免进程切换代价,也就引入了线程.2.2多线程例子同时触发以及用yield交替执行104是B的函数返回地址,将104压栈,其他也是陆续压栈,用两个执行序列和一个栈,就会发现第一个线程,居然返回的函数地址是404,也就是线程在乱跑.解决办法,一个序列一个栈,切回线程要将栈切回,用一个地方存放栈指针也就是TCB(threa...原创 2021-11-07 15:26:21 · 967 阅读 · 0 评论 -
操作系统--多进程管理CPU
一.cpu管理直观做法:cpu一直在循环取址执行,所以只需要设好pc初值即可存在问题:io会占用时间长,导致cpu利用率低.所以需要不停切换,执行多个程序,也就是并发.但是在切换的时候,除了记录返回地址,还要记录当前执行程序运行时刻(也就引入进程),就像人看书一样有人打扰,需要做个记号,下次接着看.使用的是PCB(Process Control Block)的数据结构来记录进程信息,这是操作系统中最重要的结构.总结:用多进程管理cpu.二.多进程图像 ...原创 2021-10-31 12:31:26 · 948 阅读 · 0 评论