操作系统
OS:
Operating System,通用目的的软件程序
硬件驱动
进程管理
内存管理
网络管理
安全管理
文件管理
OS分类:
服务器OS:RHEL,CentOS,Windows Server,AIX
桌面OS:Windows 10,Mac OS,Fedora
移动设备OS: Andriod, IOS, YunOS
开发接口标准
ABI: Application Binary Interface
ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行
API:Application Programming Interface
API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译
POSIX:Portable Operating System Interface
IEEE在操作系统上定义的一系列API标准
POSIX兼容的程序可在其它POSIX操作系统编译执行
运行程序格式:
Windows:EXE,.dll,.lib
Linux:ELF,.so(shared object), .a
上下文切换:
上下文:
每个任务运行前,CPU都需要知道任务从哪里加载,又从哪里开始运行,这就涉及到CPU寄存器和程序计数器(PC)。
CPU寄存器是CPU内置的容量小,但速度极快的内存
程序计数器会存储CPU正在执行的指令位置,或者即将执行的指令位置
这两个是CPU运行任何任务前都必须依赖的环境,因此叫做CPU上下文
上下文切换步骤:
1.将前一个CPU的上下文(也就是CPU寄存器和程序计数器里边的内容)保存起来;
2.然后加载新任务的上下文到寄存器和程序计数器;
3.最后跳转到程序计数器所指的新位置,运行新任务
被保存起来的上下文会存储到系统内核中,等待任务重新调度执行时再次加载进来
CPU的上下文切换分三种:进程上下文切换,线程上下文切换,终端上下文切换
Linux相关介绍
(1)linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发(基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU)
的操作系统。
linux是一个Unix类操作系统,完全开发源码,多用户多任务,服务器(数据库服务器、Web服务器、应用服务器、日志服务器、图片服务器等
等)、嵌入式领域(如路由器等需要Linux才能启动)、移动终端(比如安卓手机等、平板)
(2)常见发行版:RedHat、CentOS、Ubuntu、SUSE、FreeBSD等
(3)linux的应用领域:通常服务器使用
LAMP(Linux + Apache + MySQL + PHP)
LNMP(Linux + Nginx+ MySQL + PHP)
(4)linux的特点:
-免费的/开源
-支持多线程/多用户/多任务/多CPU(多并发)
-安全性好(开源的 一旦有个漏洞 就有网络界雷锋给修补了)
-对内存和文件管理优越
-Linux最小只有4m->嵌入式开发(手机用户多 多么庞大的市场)
Linux哲学思想
一切都是一个文件
小型,单一用途的程序
链接程序,共同完成复杂的任务
避免令人困惑的用户界面
配置数据存储在文本中
获取Linux
https://wiki.centos.org/Download
http://mirrors.aliyun.com
http://mirrors.163.com
http://mirrors.sohu.com
虚拟机
Vmware: 用软件模拟硬件
Bash
sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。
简单命令
- du -sh * #查看当前文件夹大小
- du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序
- #附送:
- du -sk filename 查看指定文件大小
- cpu查看
1)cpu个数:#cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
2)cpu核数:#cat /proc/cpuinfo | grep "cpu cores" | uniq
3)cpu型号:#cat /proc/cpuinfo | grep 'model name' |uniq
内存查看:#cat /proc/meminfo | grep MemTotal
硬盘查看: #fdisk -l | grep Disk
uname -a # 查看内核/操作系统/CPU信息的linux系统信息
head -n l /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名的linux系统信息命令
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备的linux系统信息命令
lsmod # 列出加载的内核模块
env # 查看环境变量资源
free -m # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -sh # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载磁盘和分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况网络
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息进程
ps -ef # 查看所有进程
top # 实时显示进程状态用户
w # 查看活动用户
id # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务服务
chkconfig –list # 列出所有系统服务
chkconfig –list | grep on # 列出所有启动的系统服务程序
rpm -qa # 查看所有安装的软件包
cat /proc/cpuinfo :查看CPU相关参数的linux系统命令
cat /proc/partitions :查看linux硬盘和分区信息的系统信息命令
cat /proc/meminfo :查看linux系统内存信息的linux系统命令
cat /proc/version :查看版本,类似uname -r
cat /proc/ioports :查看设备io端口
cat /proc/interrupts :查看中断
cat /proc/pci :查看pci设备的信息
cat /proc/swaps :查看所有swap分区的信息
帮助用法
man 命令操作按键,使用快捷键可以快速高效的阅读帮助文档。