操作系统
9 应用层协议
概述 网络应用程序的体系结构主要分为CS 结构和P2P 结构。
前者是客户端(Client)/ 服务端(Server)结构,如微信、QQ、游戏。
后者是端(Peer)到端结构,又叫对等体系结构,如迅雷、百度网盘。
进程通信时,没有明确的 C/S,发起者即为客户端…
8 计算机网络概论
OSI 7 层模型 注意每层对应的数据单元。
数据的封装
发送前,不断地加头部:报文👉报文段👉数据报👉帧
到达交换机,从帧头中找到路由器的地址
到达路由器,拆头部,加头部
当匹配到具体主机时,再不断地拆头部,得到数据
分组交换 VS. 电路交换
分组交换网络
通…
1 尝尝鲜:从一个Hello到另一个Hello
环境:Windows 下的 Ubuntu 18.04 虚拟机 🎯目标:让自己的系统输出 "Hello OS"
下载源码
可在系统任意位置,打开终端执行以下命令,下载源码到虚拟机上
Copy
git clone https://gitee.com/lmos/cosmos…
《操作系统实战45讲》笔记汇总
🎯: 洞悉 OS 运行机制与架构实现;
强化理解 Linux 核心技术;
系统级别的编程技巧;
“保姆级” 代码注释及详解图。
👨:导师,彭东,网名 LMOS,Intel 傲腾项目关键开发者
🔗:查看课程
传送门
尝尝鲜:从一个 Hello 到另一个 Hello
心…
7 Socket编程基础
套接字是什么?网络编程是做什么的? 了解 TCP/IP 五层模型、OSI 七层模型
类比
套接字 —— 快递员
运输层 —— 快递公司:TCP—— 某丰快递公司,UDP—— 某通快递公司
交通运输道路 —— 因特网
通讯地址 ——IP
—— 运输层协议 ——
类…
6 多线程编程基础
进程间通信复杂 [内存空间独立]、切换成本高 [时间局部性],所以发明了线程 线程
一个进程的分支 [pthread],本质上是一个轻量级的进程
通信方便,因为一个进程里的多个线程共享内存
切换成本低,因为内存是共享的,在切换线程时不需要置换缓存
pthread…
基于文件的进程间通信——用100个进程抢算累加和
设置一个并发度INS,表示要开的进程数量 使用这INS个进程,计算从start到end之间的数字累加和
start和end通过getopt解析命令行参数获取
Copy
./a.out -s 12 -e 24
输出一个整型结果:sum
[注意]
主要涉及文件及进程相关操…
5 进程间通信
IPC—— 进程间通信 —— 共享内存 ——
父亲生孩子之前约定好共享的数据位置
相关接口:shm*
shmget
分配 System V 类型的共享内存段 [段式内存]
[PS] System V 的通信方式,还在沿用;其启动方式已经被摈弃
man shmget
原型…
git commit的-m原理实现
[类似 git commit -m "msg" 的功能] 使用 - m 选项时直接打印消息,未使用 - m 选项时自动打开 vim 供输入消息
详细说明
① 当含有选项和选项参数 - m "first commit" 时
直接打印相关消息
② 当没有 - m…
4 高级进程管理
进程调度 进程调度是一个内核子系统,用户管不了
进程调度的主要任务是决定哪一个就绪状态的进程先运行
就绪进程是非阻塞进程,已具备运行条件,不需要阻塞等待了
阻塞进程就是正在睡眠 [不占用 CPU] 的进程,需要内核唤醒的进程
三态模型
阻塞、就绪、运行
阻塞…
Linux中ls -al的手动实现
实现与 Linux 原生命令【ls -al】类似的效果 需要的信息有:文件信息、连接数、用户名、组名、文件大小、修改时间、文件名
附加实现:文件排序、颜色美化、软连接显示
已实现 ls -al 的基本模板
思路流程图
获取命令行参数
捕捉 ls…
3 多进程
什么是进程 进程是程序在内存中的镜像,是正在运行的程序,是程序的实例化,是一个复杂的集合体
包含开辟的内存空间、用户信息、组信息、权限、占用的资源、正在跑的代码、打开的文件等等
与之对应
① 什么是程序
程序是编译好的可执行的二进制文件,放在磁盘上
就是一个普通文…
《网络与系统编程》笔记汇总
掌舵:宿船 传送门
课程介绍及命令行解析函数
文件、目录操作与实现 ls 的思路
阻塞与非阻塞 IO
多进程
高级进程管理
进程间通信
多线程编程基础
Socket 编程基础
计算机网络概论
应用层协议
[Task001] Linux 中 ls -al 的手动实现
[T…
2 阻塞与非阻塞IO
理解两者的真正含义及区别,能回答以上问题 两者的字面意思
上班
阻塞:上班时堵车了,等或者使用其他方法,总之要去上班
非阻塞:上班堵车了,直接不去了
老妈让买酱油
阻塞:没有酱油了,问妈要不换别的,或者换别的买
非阻塞:没有酱油了,不买了
让小明写报告
阻塞…
1 文件、目录操作与实现ls的思路
文件操作 【引入】之前学过的 cp、mv、cat 命令,都涉及到文件的读写
cp:读→写
mv:读→写→删
cat:读→写
上面这些步骤是如何实现的呢?
【底层操作,基于文件描述符】
open
打开或创建一个文件 [别名:openat、create]
man 2…
0 课程介绍及命令行解析函数
[如何实现命令选项?可以想到主函数中的输入参数 argc、argv] getopt 函数
【命令行解析函数】
<unistd.h> → Unix Standard
⭐函数原型
int getopt(int argc, char * const argv…
文件特殊权限的常用场景
实验环境:Ubuntu18.04 远程服务器 + WSL 2 本机 [版本一]
[版本二]
⭐考察对文件权限【尤其是文件特殊权限】的理解
文件权限:参考《Linux 入门及使用》笔记汇总 ——3 Linux 基础知识 ——用户和组以及文件权限的修改
文件特…
SSH免密登录的实现和本质思考
实验环境:Ubuntu18.04 远程服务器 + WSL 2 本机 在测过程中,你需要用到的数据在这里:测评服务的公钥
附加:免密登录的本质到底是什么?
【在本地测试】
ssh 主机名,已可免密登录
又是绿 :)
两步走⭐
【生成密钥对…