0%

一、总论

1.1 硬件术语

为了不让读者懵逼(主要是我自己也懵逼),所以特地整理一下在后面会用到术语。

我们电脑上有个东西叫做内存,他的大小比较小,像我的电脑就是 16 GB 的。它是由 ROM 和 RAM 组成的(“组成”可能不太严谨)。他也被叫做主存,我们为了访问他,所以需要给他的存储空间进行编号,这种编号被叫做物理地址

我们电脑上还有个东西叫做外存,他的大小比较大,像我的电脑是 256 GB的。它可以是磁盘,也可以是固态硬盘,还可以是 U 盘。我们访问它,也是需要对它的存储空间进行编号的,拿磁盘举例,我们一般用“分区-扇区”的系统来描述我们在访问磁盘的哪个区域。总之它是一个不在这一章重点讲的东西。

Read more »

一、ELF 部分

1.1 types.h

1.1.1 typedef

这是 types.h 文件,主要是给一些基本的数据类型起一个简单一点的别名。

/*	$OpenBSD: types.h,v 1.12 1997/11/30 18:50:18 millert Exp $	*/
/*	$NetBSD: types.h,v 1.29 1996/11/15 22:48:25 jtc Exp $	*/

#ifndef _INC_TYPES_H_
#define _INC_TYPES_H_

#ifndef NULL
#define NULL ((void *) 0)
#endif /* !NULL */


typedef unsigned char            u_int8_t;
typedef short                     int16_t;
typedef unsigned short          u_int16_t;
typedef int                       int32_t;
typedef unsigned int            u_int32_t;
typedef long long                 int64_t;
typedef unsigned long long      u_int64_t;

typedef int32_t                 register_t;

typedef	unsigned char	u_char;
typedef	unsigned short	u_short;
typedef	unsigned int	u_int;
typedef	unsigned long	u_long;

typedef	u_int64_t	u_quad_t;	/* quads */
typedef	int64_t		quad_t;
typedef	quad_t *	qaddr_t;



#define MIN(_a, _b)	\
	({		\
		typeof(_a) __a = (_a);	\
		typeof(_b) __b = (_b);	\
		__a <= __b ? __a : __b;	\
	})

/* Static assert, for compile-time assertion checking */
#define static_assert(c) switch (c) case 0: case(c):

#define offsetof(type, member)  ((size_t)(&((type *)0)->member))

/* Rounding; only works for n = power of two */
#define ROUND(a, n)	(((((u_long)(a))+(n)-1)) & ~((n)-1))
#define ROUNDDOWN(a, n)	(((u_long)(a)) & ~((n)-1))


#endif /* !_INC_TYPES_H_ */
Read more »

一、Object

1.1 equals()

== 可以用来判断相等,对于基本类型,判断的是值相不相等,对于引用类型,判断的是地址相不相等。

对于 Object 的 equals 方法,通过阅读 JDK 源码可知

public boolean equals(Object obj) {
    return (this == obj);
}
Read more »

North & South

1. 刻板印象

我看的是 2004 年的英剧,这个迷你剧是伊丽莎白·盖斯凯尔的原著小说改编的。豆瓣上评价她是一直被低估,但从未被超越的英国古典文学作家。(当然,基本的装逼说法)。

故事是发生在工业革命初期(剧里面有),然后女主来自赫尔斯通,是南方人,大致可以理解为他来自一个很田园,和农业化的地方

image-20220314164256811

Read more »

一、OS 的启动过程

1.1 启动流程

在讲启动问题的时候,我手头其实可以参考的教材或者纸质资料并不多,如果有,很多也是偏向工具性的阐述,而不是理论化的结构。只能说是在这里给出一个直观的、不太严谨的描述,如果之后有了更深的理解,那么就在之后再说吧。

整个流程,应该是从 CPU 加电开始,到操作系统完全掌握硬件资源结束。

整个启动流程可以被总结为下面这张图:

Read more »

[TOC]

一、总论

1.1 题目特点

虽然这三周哪次作业题目描述都很多,多到经常看不懂的地步。但是应该怎么概括呢?又是一件需要仔细思考的事情。

我们可以看一看我们的要求,给出一个表达式,然后去括号,最后比较的是表达式的长度。如果来看 19 年的题目,那么是给出一个比较简单表达式,然后求导。两年的侧重点不同,比如 19 年的题目,会有提取公因式的操作(因为当不需要去括号的时候,提取公因式会让表达式变得更短),而 20 年的题目,多了自定义函数,这样给表达式的处理增加了难度。

Read more »