操作系统是管理计算机硬件与软件资源的计算机程序, 同时也是计算机系统的内核与基石,管理与配置内存、 决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
操作系统位于用户/应用程序与硬件的中间层。应用程序通过系统调用,调用操作系统内核的系统函数,然后再通过系统内核的系统函数调用计算机硬件,让其工作。
1、资源的管理者。首先,物理资源有限而竞争使用资源的应用程序众多,必须合理地解决物理资源数量不足、合理分配资源等问题;其次,物理资源的硬件实现非常复杂,用户几乎不可能直接使用,只能借助系统来实现资源的易用性;
2、向用户提供各种服务。
3、对硬件机器的扩展。
林纳斯·托瓦茨
Linus Torvalds
出生国家:芬兰
出生日期:1969年12月28日
成名原因:Linux 系统的造物主,Linux 之父,颠覆世界的“自由主义教皇”林纳斯。著名的电脑程序员、黑客。Linux 内核的发明人及该计划的合作者。托瓦兹利用个人时间及器材创造出了这套当今全球最流行的操作系统(作业系统)内核之一。
林纳斯说,Linux 所取得的许多成功其实可以归结为他的缺点所致。“我很懒散,我喜欢授权给其他人。”
BIOS:存在主板的程序,允许你从软盘、光盘或者硬盘中选择一个来启动计算机
MBR:选择的存储设备中起始的512个字节,作用:告诉电脑从该设备的某一个分区(partition)来装载引导加载程序。
引导加载程序:储存有操作系统(OS)的相关信息,比如操作系统名称,操作系统内核 (内核)所在位置等,然后加载内核
内核:预留自己运行内存,然后通过驱动程序(driver)检测计算机硬件,接着启动init process。
Init:运行一系列的初始脚本,设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络……,登录对话框。
可以在多个分区安装引导加载程序,每个引导加载程序对应不同的操作系统,在读取MBR的时候选择我们想要 启动的引导加载程序。这就是多操作系统的原理
系统调用(笔画):内核的功能接口。
库函数(偏旁):系统调用组合成某些常用的功能
Shell:命令解释器
应用运行的方法:
a.直接调用系统函数;
b.调用库函数;
c.运行shell脚本
堆空间不用时,需要释放,(1)free系统调用来释放,(2)进程结束()。就是指我们没有释放不再使用的堆空间,导致堆不断增长,而内存可用空间不断减少。
当栈和堆增长到两者相遇时候,也就是内存空间图中的蓝色区域(unused area)完全消失的时候,再无可用内存,就出现栈溢出。
内核版本:linux核心版本。官网:www.kernel.org
Ubuntu , Fedora , RedHat 等各种不同的 Linux 操作系统发行版,简单来说就是不同厂商基于相同内核,囊括了不同的应用和界面构成的一个更加完整的操作系统版本
1、占用更多的资源
2、装了更多的服务,出现问题概率更大。
小知识: 安卓系统底层是linux系统 iOS系统底层是Unix系统。
1、Redhat:收费,主要面向服务端,服务端+图形界面都有。
2、Fedora:社区维护,红帽赞助,针对个人版,图形界面很好。
3、Centos:红帽公开代码组成的免费版本,社区维护。
1、SUSE:桌面发行版,收费,德国公司制作。
2、OpenSUSE:SUSE的免费版。
1、Debian:免费,社区维护,是迄今为止最遵循GNU规范的Linux系统。
2、Ubuntu:继承Debian,免费,界面友好。
其他版本信息: https://www.edrawsoft.cn/viewer/public/s/7b0d2684679901
Windows:某个硬盘 - 硬盘上的某个分区 - 分区上的特定文件系统 - 特定文件系统中的文件。
Linux:虚拟文件系统 - 硬盘 - 硬盘上的分区 - 分区上的特定文件系统 - 特定文件系统中的文件。
Windows:文件大体分为两种: 系统文件和用户文件。
Linux:虚拟文件系统中的文件和 Linux 操作系统内核 本身,将系统本身和系统所管理的资源分开。
举例:假设用户安装和卸载一个程序 firefox 。
windows
Linux
1、bin 系统所需要的那些命令位于此目录,比如 ls 、 cp 、 mkdir 等命令;类似的目录还 /usr/bin , /usr/local/bin 等等。这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里。
2、dev 在 Linux 中设备都是以文件形式出现,这里的设备可以是硬盘,键盘,鼠标,网卡,终端,等设备,通过访问这些文件可以访问到相应的设备。设备文件可以使用 mknod 命令来创建,具体参见相应的命令;而为了将对这些设备文件的访问转化为对设备的访问,需要向相应的设备提供设备驱动模块(一般将设备驱动编译之后,生成的结果是一个 *.ko 类型的二进制文件),在内核启动之后,再通过 insmod 等命令加载相应的设备驱动之后,我们就可以通过设备文件来访问设备了。一般来说,想要 Linux 系统支持某个设备,只需要三个东西:相应的硬件设备,支持硬件的驱动模块,以及相应的设备文件。
3、home 该目录中保存了绝大多数的用户文件 (用户自己的配置文件,定制文件,文档,数据等), root 用户除外(参见后面的 /root 目录)。由于这个目录包含了用户实际的数据,通常系统管理员为这个目录单独挂载一个独立的磁盘分区,这样这个目录的文件系统格式就可能和其他目录不一样了。
1.linux和unix兼容,unix是早期的服务器霸主,现在份额逐渐让给linux了;
2.linux是多用户多进程系统,windows是单用户伪多用户系统,不适合服务器;
3.互联网开放,linux也是开放的,像apach这样的开放软件优先在linux上实现;
4.linux是模块化的,可裁减,出现问题只要关闭一个模块,windows只有微软自己才会裁减;
5.linux的用户管理严格,病毒难以破坏,windows漏洞百出,用户管理混乱;
6.linux硬件需求小,大部分版本免费,总的成本低;
7.windows常会蓝屏、需要磁盘清理,linux下kernel panic(内核错误)几年一遇,也可以好几年不关机,一两年一次磁盘清理;
8.win的图形界面浪费了太多资源,linux使用x-window systerm,平时根本不用开图形界面。