<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sjy73的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sjy73</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sjy73]]></copyright><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第十二周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/121789664</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/121789664</guid><author>sjy73</author><pubDate>Wed, 08 Dec 2021 14:12:59 +0800</pubDate><description><![CDATA[Linux系统监控实战
一、linux系统监控常用命令


top
top 命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程，而且会定期更新显示结果。这条命令显示了 CPU 的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小，进程 PID、所使用命令以及其他。它还可以显示正在运行进程的内存和 CPU 占用多的情况。top


vmstat
用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动等的统计信息。
一般 vmstat 工具的使用是通过两个数字]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第十一周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/121654638</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/121654638</guid><author>sjy73</author><pubDate>Wed, 01 Dec 2021 15:24:50 +0800</pubDate><description><![CDATA[Kali 渗透测试：服务器攻击实战
一、Kali Linux 安装学习
1.Kali Linux 安装有几种方法：

下载官方 ISO 镜像，安装到物理机器或虚拟机中
下载官方虚拟机镜像，在虚拟机管理软件中启动
下载并部署 ARM 镜像到 ARM 系统中
任何方案都需要从官方网站下载镜像，下载之后务必校验 SHA1 哈希值，避免下载到有安全漏洞的系统。

2.Kali APT 包管理

安装软件包： sudo apt-get install &lt;软件包名&gt;
卸载软件包： sudo apt-get ]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第九周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/121444717</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/121444717</guid><author>sjy73</author><pubDate>Sat, 20 Nov 2021 20:36:13 +0800</pubDate><description><![CDATA[理解进程调度时机跟踪分析进程调度与进程切换的过程
一、原理分析
1、进程的调度时机与进程切换
操作系统原理中介绍了大量进程调度算法，这些算法从实现的角度看仅仅是从运行队列中选择一个新进程，选择的过程中运用了不同的策略而已。对于理解操作系统的工作机制，反而是进程的调度时机与进程的切换机制更为关键。
2、进程调度的时机
（1）中断处理过程（包括时钟中断、I/O中断、系统调用和异常）中，直接调用schedule()，或者返回用户态时根据need_resched标记调用schedule()；
（2）内核线程可以直接]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812 《Linux内核原理与分析》第八周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/121307079</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/121307079</guid><author>sjy73</author><pubDate>Sat, 13 Nov 2021 17:40:11 +0800</pubDate><description><![CDATA[一、实验：Linux 内核如何装载和启动一个可执行程
实验步骤
1.在shell中依次运行图中命令，获取本次实验的代码，并编译运行

2.启动gdb调试，并在系统调用sys_execve的入口处设置断点
(gdb) b sys_execve

继续运行程序，在QEMU窗口中输入exec，系统就会停在上面设置的断点处，如图：

接下来我们可以单步跟踪sys_execve的内核代码
设置以下断点来完整地跟踪进程的创建和启动代码：
b load_elf_binary

b start_thread


总结
三、]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第七周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/121179299</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/121179299</guid><author>sjy73</author><pubDate>Sat, 06 Nov 2021 15:40:12 +0800</pubDate><description><![CDATA[一、分析 Linux 内核创建一个新进程的过程实验
1、在MenuOS中增加fork命令，使用help查看现有命令，步骤如下：
cd menu 
mv test_fork.c test.c//在MenuOS中增加fork命令，并覆盖掉test.c文件
make rootfs  
MenuOS&gt;&gt;help  
MenuOS&gt;&gt;fork


2、在gdb中调试
//shell1中启动内核
cd ~/LinuxKernel
qemu -kernel linux-3.18.6/arch/x8]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812 《Linux内核原理与分析》第六周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/121054044</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/121054044</guid><author>sjy73</author><pubDate>Sat, 30 Oct 2021 18:29:49 +0800</pubDate><description><![CDATA[使用 gdb 跟踪分析一个系统调用内核函数
一、实验过程
1.给MenuOS增加命令：geiuid

然后进入menu，运行make rootfs，结果如下：

2.使用gdb跟踪系统调用内核函数sys_time
步骤如下：
//shell1中启动内核
cd ~/LinuxKernel
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
// shell2中使用gdb调试
cd ~/LinuxKernel
gdb
]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812 《Linux内核原理与分析》第五周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/120924926</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/120924926</guid><author>sjy73</author><pubDate>Sat, 23 Oct 2021 19:37:27 +0800</pubDate><description><![CDATA[一、课本学习
1.用户态、内核态和中断

内核态：处于高的执行级别下，代码可以执行特权指令，访问任意的物理地址，这时的CPU就对应内核态，对所有的指令包括特权指令都可以执行。
用户态：处于低的执行级别下，代码只能在级别允许的特定范围内活动。在日常操作下，执行系统调用的方式是通过库函数，库函数封装系统调用，为用户提供接口以便直接使用。
Intel x86 CPU有4种不同的执行级别0、1、2、3，Linux只使用了其中的0和 3两个级別分别表示内核态和用户态。用户态和内核态很显著的区别方法就是CS：EIP的指]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第四周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/120789985</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/120789985</guid><author>sjy73</author><pubDate>Fri, 15 Oct 2021 21:05:46 +0800</pubDate><description><![CDATA[实验三
一、实验内容：跟踪分析Linux内核的启动过程
二、实验过程
1.使用实验楼的虚拟机打开 shell，输入下列命令
cd ~/LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img


使用 gdb 跟踪调试内核
$ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S


关于-s和-S选项的说明：

-]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第三周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/120680441</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/120680441</guid><author>sjy73</author><pubDate>Sat, 09 Oct 2021 23:37:34 +0800</pubDate><description><![CDATA[一、实验要求
完成一个简单的时间片轮转多道程序内核代码
二、实验过程
1.输入以下指令编译运行mykernel
$ cd ~/LinuxKernel/linux-3.9.4

$ rm -rf mykernel

$ patch -p1 &lt; ../mykernel_for_linux3.9.4sc.patch

$ make allnoconfig

$ make // 编译内核

$ qemu -kernel arch/x86/boot/bzImage

执行结果如下

2.查看mymain.c与m]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第二周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/120593446</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/120593446</guid><author>sjy73</author><pubDate>Sun, 03 Oct 2021 12:58:51 +0800</pubDate><description><![CDATA[遇到的问题
一、计算机是如何工作的？
现代计算机大都采用冯诺依曼结构，冯诺依曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置，所以计算机在运行的时候需要从中将数据取出，然后用程序进行处理，最后得到输出。我们以实验中简单的C语言程序作为例子讨论计算机如何工作：
int g(int x)
{
    return x + 3;
}
    
int f(int x)
{
    return g(x);
}
    
int main(]]></description><category></category></item><item><title><![CDATA[2021-2022-1 20212812《Linux内核原理与分析》第一周作业]]></title><link>https://blog.youkuaiyun.com/sjy73/article/details/120496244</link><guid>https://blog.youkuaiyun.com/sjy73/article/details/120496244</guid><author>sjy73</author><pubDate>Sun, 26 Sep 2021 23:21:55 +0800</pubDate><description><![CDATA[一、实验一
1.Linux是什么？
Linux是一个操作系统，就如我们熟知的windows、Mac OS。Linux 本身只是操作系统的内核。内核是使其它程序能够运行的基础。它实现了多任务和硬件管理，用户或者系统管理员交互运行的所有程序实际上都运行在内核之上。
操作系统在整个计算机中的角色：

我们的Linux主要是 系统调用 和 内核 那两层。
2.Linux与UNIX的关系
Linux 是一个类似 Unix 的操作系统，Unix 要早于 Linux，Linux 的初衷就是要替代 UNIX，并在功能和用户]]></description><category></category></item></channel></rss>