开贴学习Day_01记录

开贴记录一下自己自学的过程。希望自己可以在这条路上走下去(PS:码龄八年是因为以前初中的时候用csdn下过东西。真正开始学习计算机是六个月前,非科班,末末流9b5,目前大二。希望以后可以跨考计算机成功,离开这个专业)

目前已经学过的

1.《汇编语言》 王爽

2.《c primer plus》

3.《c++primer plus》

4.《windows程序设计》

5.mooc上北京邮电大学c++面向对象进阶

6.b站内华达程序员windows程序设计课程

正在学的

1.《操作系统》王道

2.《数据结构》

3.mfc程序设计

--------------------------------------------------------------------------------------------------------------------------------

今日所学

《数据结构》

1.什么是数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。是一门研究非数值计算程序设计问题中计算机操作对象以及他们相互关系和操作的学科。

注意:非数值计算,主要是增减查改删。

2.引入例子三则,导入了三个数据结构。分别是线性(表)、树、图。

 

 

3.数据结构的基本术语

分清数据、数据对象、数据元素、数据结构的区别。数据元素是数据最基本的单位,不可分割。相当于集合中的个体。数据对象是把数据中相关的数据元素拉出来凑成一个集合。数据结构就是数据对象直接相互关系的集合。

4.数据结构分类

数据结构按照逻辑抽象为逻辑结构。比如栈、队列(线性),图,树,链表(非线性)。

按照在计算机的储存为物理结构,也叫存储结构。可分为顺序储存结构,如数组。链式储存结构,如c语言的链表。前者是按照存储器中的相对位置来表示元素直接的逻辑关系,后者是用指针实现的。

 5.ADT(abstract data type)的表示

ADT dataname{

数据对象 {xxx}

数据关系 {xxx}

基本操作

Func1(param)

初始条件:

操作结果:...

...

}用这种伪代码表示抽象数据类型。然后用高级语言进行实现。这里贴出我用c++写的一个关于复数的ADT实现。

#include <iostream>
class ImageNum {
	double real;
	double imag;
public:
	ImageNum(double real, double imag);
	double operator/(ImageNum dived);
};
ImageNum::ImageNum(double real,double imag) {
	this->real = real;
	this->imag = imag;
}
double ImageNum::operator/(ImageNum dived) {
	double ret = 0.0;
	ret = this->real / dived.real + this->imag / dived.imag;
	std::cout << ret << std::endl;
	return ret;
}
int  main() {
	ImageNum A(5, 5);
	ImageNum B(5, 5);
	A / B;
	return 0;
}

6.算法和算法分析

1)算法特点

有穷性、确定性、可行性、0个及以上输入、1个及以上输出。

2)算法要求

正确性、可读性、鲁棒性(即使输入非法数据也可以进行操作)、效率和低存储量需求;

3)衡量算法的两个标准

从时间上,为渐进时间复杂度,简称时间复杂度,来衡量。算法的时间度量记作

T(n)=O(f(n));利用高等数学的极限思想。

比如for(i=1;i<=n;i++) //此代码频度为n+1

        for(j=1;j<=n;j++)//此代码频度为n(n+1)

                x++;//此代码频度为n(n)=n²

最后加起来为2n²+2n+1,找到幂次最大,其他趋于无穷时除n²可省略。所以此算法的时间复杂度表示T(n)=O(f(n²)).

从空间上,也有类似的空间复杂度。

S(n)=O(f(n)),他表示这个算法除了执行本身所需要的空间加上寄存本身所用的指令,常数,变量等所需信息的辅助空间的和。若额外空间需求量与输入无关,则O(n)

《操作系统》

1.操作系统的基本概念

1)操作系统(operating system)是一种系统软件,控制管理者整个计算机系统和硬件与软件资源,合理地组织,调度计算机的工作与资源分配,进而为用户和软件提供方便接口与环境的程序集合。

2)操作系统的特征

①.并发,理解他和 并行的区别。并发是指多件事情在同一直接间隔发生。而并行是指同一时刻发生。他和共享是计算机最基础的两个特征。也是互相依存的

②.共享,指系统的资源可供内存中多个并发执行的进程共同使用。

共享分两种,一种是互斥共享,比如打印机,在某段时间只允许一个进程访问资源。这种也叫做临界资源。

另一种是同时访问,其实也是宏观上的。微观上并发地访问。

③.虚拟

④.异步 就是进程的执行不是一贯到底的,而是走走停停,他以不可预知的方式向前推进。这就是程序的异步性。
2.操作系统的发展

手工操作(无操作系统)->批处理阶段->多批道处理系统(效率变高,因为cpu I/O设备并行使用,空闲较少)->分时操作系统(解决多批道系统的人机交互问题。)->实时操作系统(为了严谨的时间内完成任务,如导弹发射所用的操作系统)

3.操作系统的运行机制

1.指令

在操作系统中,可以分为特权指令和非特权指令,特权指令仅仅可以由内核执行,比如删除内存等执行。

同理,为了适应这两种指令,CPU也有两种不同性质的状态,内核态和用户态。用此来区别是不是可以执行特权指令。

特权指令一般可分为四种,时钟管理,中断机制,原语(最接近硬件,有原子性,执行的时候不能被中断,调用频繁),还有系统操作的数据结构及处理(可选)。

并根据有没有第四个,可分为大内核和微内核之分。大内核有第四个,把很多功能都放进内核,微内核只把基本功能放在内核。

2.中断

其实可以把中断简单理解为由用户态向内核态的转变,而相反地,设置pswr标志位是内核态向用户态转变。

3.中断和异常的定义

中断也称为外中断(狭义的中断),指CPU执行指令以外的事情的发生,如IO设备发出中断。

 

中断的过程

4.系统调用

就是用户在程序中调用操作系统提供的一些子功能,系统可视为特殊的资源(内存分配,写内存),需要通过系统调用向操作系统提出请求。

要注意的是,在高级语言有一些库函数,比如写内存,创建文件,这都是需要系统调用的,而系统调用实现的这些功能都是内核态的特权指令,因此肯定会有中断语句,(int xx),到内核去实现。

可以这样说,调用操作系统是发生在用户态的,而系统调用的实现是一个很底层的答案,是放在内核态中实现的。

 

by_oxygen1a1 date 2020/1/8

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值