最近开了一门操作系统的课,喜欢折腾的我,肯定要折腾。
1.认识操作系统
- 操作系统的概念
- 操作系统的重要性
- 常见操作系统
操作系统(Operating System)
An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. The operating system is a component of the system software in a computer system. Application programs usually require an operating system to function.
操作系统是系统软件,管理计算机硬件和软件资源以及给计算机软件提供基本的服务。在计算机系统,操作系统是系统软件组成之一。软件通常需要操作系统去运行。
操作系统的重要性
学习计算机语言的时候,不用过于关注硬件,这些可以交给操作系统来完成。所以我们需要对操作系统的认识和了解是很重要的。软件开发中,跟操作系统打交道的东西也比较多,如java中的线程。
目标:在自己的简历中可以写上熟悉Linux系统操作
常见操作系统
Window
Linux
Unix
2.操作系统体验
- 操作系统比较
Windows是我们比较常用的操作系统,其图形化界面操作,傻瓜式操作使用它成为广泛使用的操作系统之一。
Linux系统有许多发行版本,我选了Ubuntu,Fedora,Debian这几个比较受欢迎的系统来体验。不过long long ago ,我也是使用过Linux操作系统,Deepin
这几个Linux操作系统都有桌面软件支持,不然我会奔溃的。作为长期的Windows用户,一开始我是很不习惯的。虽然说有GNOME这个桌面,可是,后面用得最多的就是那个黑黑的东西了--Terminal
为了体验完整的操作系统,直接安装,不是在虚拟机运行。 - Linux系统折腾
1.配置系统
以Fedora为例子,GNOME有Workspace,有各种快捷键,我还是挺喜欢的。
系统的配置可是已经够折腾的事情。Linux是很安全的操作系统,不像Windows放肆用户行为。
安装软件需要密码授权,系统文件操作需要获取root权限等等。
2.vi编辑器的使用
3.浏览器使用和翻墙解决方案:有时候需要用Google,所以需要翻墙,修改hosts
命令
gedit /etc/hosts
或者vi hosts
粘贴后:wq保存
4.安装软件
使用软件源,找软件源,安装软件,如命令dnf install [packname]
没有编译的,需要编译安装
tar.gz(bz或bz2等)结尾的源代码包,这种软件包里面都是源程序,没有编译过,需要编译后才能安装,安装方法为:
1、打开一个SHELL,即终端
2、用CD 命令进入源代码压缩包所在的目录
3、根据压缩包类型解压缩文件(*代表压缩包名称)
tar -zxvf ****.tar.gz
tar -jxvf ****.tar.bz(或bz2)
4、用CD命令进入解压缩后的目录
5、输入编译文件命令:./configure(有的压缩包已经编译过,这一步可以省去)
6、然后是命令:make
7、再是安装文件命令:make install
8、安装完毕
软件依赖库:依赖的原因
编写软件的人不想自己一个人做完所有的事情,就像寻求外援,于是就找上了各种各样的软件包。
举个例子,我只是想写一个QQ,但是如果没有图形界面库(或者说我不用图形界面库),我就得自己想办法怎么在屏幕上画一个窗口,怎么显示按钮,怎么显示列表,怎么……
好了,现在我们知道有GTK库,Qt库,在编写程序的时候,我们只要调用他,告诉他我要在哪里哪里创建一个窗口,然后有什么控件,映射什么信号,等等等等,等我们描述完了,图形界面库就开始在屏幕上绘图,这个过程就不需要我们管了。
5.日常使用
- office文件处理:LibreOffice 完美
- 音乐:在线听 或者 自动播放器
- 即时通讯:手机
6.编程开发
7.常用命令熟记
3.加深理解操作系统
- 存储管理
- 设备管理
- 文件管理
- 进程管理
- 作业管理
重要知识
1.Q:什么是虚拟存储器?
A:虚拟存储技术是非常重要的存储管理技术,它的核心思想是利用巨大的硬盘空间来弥补不足的实际内存空间。在虚拟内存管理下,应用程序可以使用的存储空间远远大于实际的内存大小。我们将一台计算机实际安装的内存称为物理存储器,将通过虚拟存储技术得到的比实际内存空间大得多的存储空间成为虚拟存储器。虚拟存储技术的实现也是非常复杂,如果细讲的话肯定又 是吃力不讨好,这里只提一提最简单的思想。内存单元在计算机中是有编号 的,叫内存地址。如果你的计算机中有1M物理内存(天哪,286的说?呵呵, 举例子方便嘛),则物理内存的地址范围为0到1048575(1024 x 1024 - 1)。 如果想访问地址为1048576的单元,显然是不可以的,因为最大只到1048575了 。但是,如果这时我将物理内存中所有的东西先保存到硬盘上,然后通过某种 方法将1048576映射到地址为0的物理存储单元上,我不就又得到另外整整一个 M的存储空间了吗,当程序要访问地址为0的单元时,我把原先存储在硬盘上的 内容调回物理内存中就可以了。这个想法够巧妙吧,它就是虚拟存储技术的核 心思想。于是我就可以得到n个1M空间了。真正的虚拟存储管理比上面我所提的 还要复杂、巧妙得多,它能够实现让不同的进程在不同的地址空间上运行(即 让每个进程认为自己占有所有的存储空间,可以任意使用,不必在乎系统中的 其他进程是如何使用存储空间的。这犹如让不同的进程运行在不同的计算机上) ,并且要考虑最优的内存使用效率
2.Q:什么是缓冲(buffering)技术?
A:在数据到达与离去速度不匹配的地方,就应该使用缓冲技术。缓冲技术好比是一个水库,如果上游来的水太多,下游来不及排走,水库就起到“缓冲”作用,先让水在水库中停一些时候,等下游能继续排水,再把水送往下游。通常CPU的速度要比I/O设备的速度快得多得多,所以可以设置缓冲区,对于从
CPU来的数据,先放在缓冲区中,然后设备可以慢慢地从缓冲区中读出数据。
3.Q:什么是“并发”?什么是“并行”?
A:俗话说,一心不能二用,这对计算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。我们通常使用的计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发技术。实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:
在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。在Windows中,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单地说,有如下关系:
总线程数 <= CPU数量:并行运行
总线程数 > CPU数量:并发运行
并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率
比较高。但是,如果在多CPU计算机中只运行一个进程(线程),就不能发挥多
CPU的优势。值得注意的是,Windows 9x并不支持多CPU系统,如果在多CPU系统
上安装Windows 9x,有再多的CPU也是白搭。
总结:
操作系统是基础专业课,重要的知识需要掌握。Linux虽然不适合日常使用,但是作为计算机相关专业的,需要熟悉操作,使用Linux操作系统可以加深对操作系统理解。加强操作系统与编程语言的联系,加强面向对象的理解。
最后来个Ubuntu合影
Ubuntu 64 位-2016-05-08-22-01-53.png