0%

为了配合《操作系统实战45讲》,还是得重学一下汇编。所以就有了这个系列。

本系列文章算是《汇编语言第4版》的笔记,也有自己的一些心得~

然后这个系列的文章标题是这样的:汇编:吧啦吧啦吧啦

老师的教学思想镇楼:

我并不完全赞同这个思想,因为会有客观条件限制。

看看计算机的逻辑结构

计算机中各类存储器的逻辑连接

阅读全文 »

本系列文章是《操作系统实战45讲》课程学习过程中的心得体会与问题汇总。

系列文章放入「操作系统实战」分类里。如果对你有帮助,欢迎关注我。

如果你也想一起写一个属于自己的操作系统,直接翻到文末查看

话不多说,现在进入正题。本文分为两个部分:一、实验环境搭建。二、前4节课遇到的问题与解答。

实验环境搭建

1、一台电脑。电脑上装有Windows或MacOS系统。我用的是MacOS系统。

2、虚拟机。我选择的是VMware Fusion 12(若是Windows,装个最新版VMware即可)。

3、Ubuntu/CentOS系统。我选择的是Ubuntu,作为虚拟机系统,用来实现自己的操作系统。

搭建过程

  1. 安装好虚拟机软件VMware,基本都是点下一步,下一步,直到安装完成。

  2. 这里[1] 下载Ubuntu 20.04系统安装文件,是一个iso文件。

  3. 在VMware里创建一个新的虚拟机,用来安装Ubuntu 20.04系统:

新建虚拟机

选择新建,后面的步骤比较简单,跟着提示做就可以了。

阅读全文 »

计算机科学入门:

《计算机科学速成课》,B站中文字幕版,共40集

《CS50 哈佛计算机科学导论》,非常经典,B站地址

《算法导论-MIT麻省理工》,B站

《物理学十分钟速成课》,B站地址

计算机组成原理:

《计算机组成原理 快速复习》,B站

《计算机组成原理 唐朔飞》,哈工大,B站

操作系统:

《操作系统 清华大学》,向勇、陈渝,B站地址

《操作系统 哈工大》,李治军,内容比清华的更详细,B站地址

阅读全文 »

简介

SSH 通常有密码登录和密钥登录两种方式。密钥登录时使用的是 SSH 的密钥,由 ssh-agent 来处理。这里介绍使用 GnuPG 生成的 PGP 密钥来登录 SSH。此时使用 gpg-agent 来处理登录过程。

使用 GPG 密钥登录的好处是便于管理服务器。只要把 GPG 密钥的公钥放到服务器上面,用同一个密钥可以登录所有这些服务器。还有,GnuPG 可以使用智能卡来保存密钥,使 SSH 密钥更加安全。

注意:

这篇文章使用 Ubuntu 18.04,并使用 GnuPG v2.2.X 来演示,小于 v2.2.X 的版本下文某些命令可能是无效的。运行如下命令查看版本:

1
gpg --version

生成 GnuPG 密钥并添加认证密钥

快速生成 GnuPG 密钥的方法详见 这里

分步生成 GnuPG 密钥的方法详见:

  1. 生成主密钥
  2. 生成认证密钥等子密钥

生成属于自己的一对密钥后,再向这个密钥中添加一个认证密钥[A]。

阅读全文 »

准备工作

1)从 NVIDIA 官网下载对应显卡的驱动备用

https://www.nvidia.cn/Download/index.aspx?lang=cn

我下载的驱动是:NVIDIA-Linux-x86_64-410.93.run
安装环境:华硕笔记本 Ubuntu 18.04

注意
主板 BIOS 必须关闭安全启动 (Secure Boot),不然安装的 NVIDIA 驱动无法加载。
但此时,还是能正常进 Ubuntu 桌面,可能是此时使用的是 Intel 核显有关。

2)首次运行 NVIDIA 驱动

1
2
chmod +x NVIDIA-Linux-x86_64-410.93.run
sudo ./NVIDIA-Linux-x86_64-410.93.run

首次运行驱动程序,不会安装,因为系统中有 nouveau 驱动存在。
但是 NVIDIA-Linux-x86_64-410.93.run 会生成 /etc/modprobe.d/nvidia-installer-disable-nouveau.conf 文件。用于禁用系统自带的 nouveau 驱动。该文件内容如下:

1
2
3
4
$ cat /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
# generated by nvidia-installer
blacklist nouveau
options nouveau modeset=0

3)使禁用生效

只有 blacklist 并不能真的禁用 nouveau 驱动。执行如下命令更新 initramfs:

1
sudo update-initramfs -u

然后,重启系统,禁用就成功了。执行如下命令验证:

1
2
# 输出结果为空说明已经禁用 nouveau 驱动
lsmod | grep nouveau
阅读全文 »

非对称加密需要公钥和私钥:

你的公钥的作用:别人用来给你发加密的信息(公钥加密)&别人验证你的签名(公钥解密),即加密&验证(别人来做)
你的私钥的作用:你用来创建签名(私钥加密)&解密别人发给你的信息的(私钥解密),即解密&签名(你来做)

具体而言,Alice要想发送加密信息到Bob,则:
Alice有Alice的签名私钥和Bob的加密公匙
Bob有Alice的签名公匙和Bob的解密私钥

使用GPG可以很好的演示这一点:

1
2
3
4
5
6
gpg (GnuPG) 2.1.11
libgcrypt 1.6.5
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
阅读全文 »

Linux 中每个进程维护了一个文件描述符表,如 shell 终端,默认有三个文件已打开,他们的文件描述符和文件对应关系为:

1
2
3
fd 0: /dev/stdin -> /proc/self/fd/0(前者是指向后者的软链接,下同)
fd 1: /dev/stdout -> /proc/self/fd/1
fd 2: /dev/stderr -> /proc/self/fd/2

所以在该 shell 中创建新的的文件的描述符就从3开始。

用于输入输出重定向使用的文件描述符大于9,所以安全可用的自定义文件描述符范围就是:3-9

因为 Bash 文档 里有这样一句话:

Redirections using file descriptors greater than 9 should be used with care, as they may conflict with file descriptors the shell uses internally.

下面的几个例子会分别演示

1)输入输出重定向
2)复制输入输出文件描述符
3)移动输入输出文件描述符
4)关闭文件描述符和同时读写文件
5)将已重定向的输入/输出恢复到标准输入/标准输出

阅读全文 »