| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux进阶---第一篇 -> 正文阅读 |
|
[系统运维]Linux进阶---第一篇 |
目录 ?5.常识 1.基础复习1). Linux 目录结构 / 根 /boot 存放系统内核及启动相关的文件,类似于windows的C盘 /bin 存放常用的命令(二进制可执行程序) /lib 存放库文件 /etc 存放系统的配置文件 /home 家目录(所有普通用户的家目录) /root 存放管理员的家目录 /usr 存放系统应用文档和程序 ? 例如:QQ 微信 /dev 存放我们的设备文件 /proc 存放虚拟文件系统目录,保存进程在内存中的信息 /mnt 临时挂载点 2). 文件类型 普通文件 - 目录文件 d??? ==》 windows 的文件夹 管道文件 p 链接文件 i 设备文件 c,d 套接字文件 s windows上所有能拷贝进Linux的文件(照片,电影,pdf,exe...),都是Linux里的普通文件 ? ?3). 权限? chomd r (读) ???? w(写) ?????? x(执行) ?4) 命令: ?????? 操作文件:cp,rm,mv,more,less,head,tail,vi/vim ???????????????????????? mkdir,cat,touch,cd,pwd ?????? 进程:ps (显示运行的程序)???? 结束进程:kill????? ? ? ? ? ? ? ? ? ? & :后台运行进程??? jobs:查看后台运行的进程?? ????????????????? top:查看系统的运行的进程,cpu利用率等等,类似于windows的任务管理器 ?5)如果要直接运行 可执行程序 ? 则需要把可执行程序移动到 /bin 目录下,系统是从/bin这个目录下开始找二进制的可执行文件 ?6) 可执行程序的标准存放路径 --- $PATH ?7)静态库和共享课 静态库:libxx.a 共享库:libxx.so 8)静态库和共享库的区别: 静态库是在编译链接生成可执行程序时,把库里的方法直接放到可执行程序里,作为可执行程序的一部分 共享库:在运行可执行程序时,动态去链接 通过静态库编写的程序,放在任意计算机都可执行 通过静态库编写的程序,只有计算机上存在这些共享库才能被执行 9)可通过命令 ldd 查看可执行程序用到了那些共享库 ? 2. 头文件存放位置3.printf1).存在 \n时 ? ?先打印 hello world 再睡眠3秒钟 2).不在存在\n时 先睡眠3秒再打印 hello world ?3)prntf为什么需要缓冲区? 在屏幕打印出数据时,是把数据交给内核,内核帮助我们去打印,如果没有缓冲区,一直频繁的切换用户态和内核态,让内核去打印,开销太大,效率太低。 4) printf缓冲区的作用 为了避免开销太大,并且提高效率,我们设置缓冲区,用来存储将将要打印的数据。 5)刷新缓冲区 a:缓冲区放满(完全缓冲) b:缓冲区未满(行缓冲),printf里的\n会强制刷新缓冲区,将此行数据送到内核,也可通过fflush (stdout)强制刷新 c:?? 程序结束时? exit????? ---> ?? 1. 刷新缓冲区 ? ? ? ? ? ? ? ? ? ??? 2.调用_exit(),退出整个程序 6)缓冲区的大小 一般为0.5k或者4k 4.主函数的参数1)获取外部信息 char* argv[ ] ?主函数的第一个参数内容是自己的名字, 所以主函数至少会有一个参数内容 ?多个参数 ?2) 环境变量 char* envp ?从第一个元素开始填充,最后一个元素赋值为NULL 5.常识?1)冯诺依曼结构计算机---五大组成部分:控制器,运算器,存储器,输入输出设备 2)总线:地址总线,数据总线,控制总线 3)内存由内核(操作系统)进行管理分配 4)操作系统:管理计算机的软硬件资源,为用户提供交互的接口 6. 内存操作系统在进行内存管理时,会将内存分为若干页进行管理,一页是4k/8k 假设内存为4G,1页为4K,那么可以划分为2^20页 物理内存4G,会被划分为2^20 物理页,把程序加载到内存时,也会把程序进行划分,4k的程序作为1页,存放在物理页中 ? ? 7.程序在内存中的存储?程序在内存中并不是连续存储的,物理页的那一页空闲就会被操作系统随机分配用来存储程序,所以为了清楚每一页程序在物理内存中的位置,通过页表来记录每一页程序的编号所对应的物理页的编号,再通过偏移量的计算,就能找到物理页上每个数据的准确位置,便于进行访问或者修改 ? ?8.? 地址调试所用的地址为逻辑地址而不是物理地址 不采用物理地址,是因为我们不清楚那块物理地址所对应的空间是空闲的 使用逻辑地址时,我们不用考虑这些问题,操作系统会给我们分配空闲的物理空间,并且记录相应的逻辑地址和物理地址(页表),因此可以由逻辑地址推算出对应的物理地址(查页表计算偏移量) 9. 进程空间?在32位系统下,物理内存无论多少,进程地址空间都是4G ?每个进程都有自己的进程地址空间,他们的进程地址空间之间没有什么联系,互不干预 ? 10.? 程序的划分? ?在页表记录时,是从代码段开始的页面开始记录的,所以一定不会从0页开始,上面只是为了方便理解,所以是从0开始的 代码段,数据段,堆,栈,内核,这五部分再进行页面划分时,是不会有任意两个出现在同一个页面的,在设计时,进行了有意的区分,一页未满,但跨入了下一个段时,则会将此页剩余部分浪费掉,在新页进行下一个段的划分 11.进程操作系统给每个进程创建了一个进程控制块---PCB,对进程进行管理 PCB ---> struct task_struct????? Linux上用一个结构体来表示PCB pid---唯一标识进程 status---表示进程的当前状态(就绪,运行,阻塞) ? ? ? 12.fork---复制进程pid_t fork(void) ? 头文件 #include <unsitd.h> ? ?两个进程同时进行 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 15:33:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |