Junior_week2 summarization

大三的课程开始了,这学期有

  • 系统方向
    • os
    • compiler
  • 信息系统
    • 信息系统概述
    • 信息系统分析与设计
  • 数字媒体
    • 计算机图形学
  • 软件工程
    • 软件测试

现在两周过去了,做个总结~

os

第一节课

第一节课上主要介绍了为什么学习os,以及os中的八大问题,第一节介绍课斌哥也能上得很充实,一点都不水!
大部分os方面的概念都已经在ics中接触过,下面说说一些新的概念:

  • ISA:(instruction set architecture)硬件提供的接口
  • ABI:(abstraction binary instruction)cpu提供一部分非特权,os提供特权
  • API:库提供的给应用程序
    Junior_week2 summarization_第1张图片

其中application和os之间有直接的接口,和硬件之间也有直接的接口。通过几个实例理解这三个概念的区别,比如要实现一个虚拟机,就要实现ISA,而WinE(windows emulator)就是实现了ABI。
os的功能主要就是两点,面向程序员和面向硬件。
os中的八大问题:

  • scale up:主要是多核的情况下性能怎么同步提升
  • security&privacy:do_brk()的exploit
  • power efficiency
  • mobility:移动领域跟os也是紧密相关
  • parallel code
  • scale out:分布式系统
  • non-volatile storage:os需要adapt to new memory model
  • virtualization

第二节课

首先介绍了pc的总体结构,即von neumann体系结构

其中io和cpu之间还有dma。
系统有五种模式
Junior_week2 summarization_第2张图片

  • real mode:启动时,一开始是实模式,从物理地址访问,16位。
  • protected mode:保护模式,32位,用虚拟内存保护os,且保证app之间不相互影响。
  • virtual-8086 mode:为了保证兼容提出来的。
  • IA-32e mode:32位扩展,支持36位。
  • SMM:最高优先级

系统的一些重要的寄存器:

  • EFLAGS
  • CR0:含PE(protection enabled)和PG(paging)
  • CR1:intel自己使用的
  • CR2:告诉os page fault的地址
  • CR3:页表的base address
  • CR4
  • GDTR:global descriptor table register,gdt是提供的分段的机制,对每一段要明确base address和limit,linux中没有分段,故设置成0和4G
  • IDTR:interrupt descriptor table register,IDT是一个数组存储每个中断描述符对应的handler的地址,对于int #0x80 handler在跳转到syscall table
  • TR
    接下来讲了memory model,重要的一点是memory的寻址模式。早先的8086是16位的cpu,物理内存确有20位,因此采用两个16位的寄存器来寻址,physical addr=16*CS+IP。直到80386有32位,因此用eip
    memory layout如下:
    Junior_week2 summarization_第3张图片
  • low memory:机器启动时运行的栈,内存
  • VGA display:操作屏幕显示的代码
  • BIOS ROM:加载boot loader
    I/O space:用in,out操作
    接下来解读代码,xv6 boot的代码。

compiler

compile是对语言的解析,一种语言的定义如下:

因此学编译器就是看每一层是怎么做的。
现在还只是简单讲到了lexical analysis(词法分析)。其中编译器分为以下几个阶段:

对于一个程序其实就是一串字符,包括空格,换行符等,而lexical analysis要做的就是将这些字符转换成token stream,token是一个结构由token class和lexeme组成,token class就包括operator,identifier,keyword等,而lexeme则是某个此法单元下具体的字符串。
当提取出token之后就将token组织成一个符合语言规范的结构,有了结构之后再解析这个结构的语义。
那么一门语言究竟如何定义和如何解析呢?
定义一门语言,就是定义出这门语言有哪些字符串,必须有一个强有力的工具来表达字符串的集合,即regular expression,假设e是reg-exp,那么S(e)则是这个e所表达的字符串集合。
e有一下几种模式:

  • character c(c是属于语言所规定的alphabet):S(c)={c};
  • ε:代表空串,S(ε)={}
  • concatenation e1e2: e1e2分别是reg-exp,S(e1e2)=S(e1)S(e2)
  • choice e1|e2:S(e1|e2)=S(e1) U S(e2)
  • kleen closure e*:S(e*)=S(ε) U S(e) U S(ee) U S(eee) U … = S(e0) U S(e1) U S(e2) U S(e3) U …
  • 正闭包 e+:S(e+)=S(e) U S(ee) U S(eee) U …

有了正则表达式就能容易的定义正则语言了。
比如定义identifier,就是identifier=letter(letter|digit)*
定义了语言之后想要识别他们,就引入了有限自动机,有限自动机分为一系列状态,一个起始状态,一个或一些接收状态,transition,以及输入,就不多说了。
接下来的课程应当是怎么根据regular expression构建finite automata.

信息系统工程

这是一门概述课,主要是了解信息系统的概念。
信息系统不仅仅是计算机软硬件,而且是业务流程,基础数据,应用者与计算机的有机结合。
信息化的实质:

  • 管理观念变革:信息系统不仅仅是工具和手段。
  • 业务流程变革
  • 工作方式转变
  • 再创新的过程

信息化的三个阶段:

  • 结果记录
  • 流程监控
  • 智能决策

信息系统面临的挑战:

  • 彻底、全方位的实施
  • 不断升级换代
  • 根据需求逐步分散实施
  • 不同部门或企业间信息交互与共享

软件测试

这门课主要还是实践吧,概念无非那些,考试前突击就好。
一些术语的区分:

  • error
  • fault
  • failure
  • incident
  • exception
  • anomaly
    然后是一些软件测试的原则,这个好好读一下书在总结吧。
    然后讲了软件测试上需要的一些数学知识,这个也是要用到的时候在好好看看吧。

计算机图形学

说几个关键概念:

  • 图形处理管线:图形处理的一般过程,称为图形管线。
    • 几何管线(3D管线)
    • 图像管线(2D管线)
      Junior_week2 summarization_第4张图片

你可能感兴趣的:(Junior_week2 summarization)