Kuankuan

活捉一只程序猿。。。


  • 首页

  • 分类

  • 归档

Neutron 快速笔记 - 框架概念

发表于 2016-09-09 | 分类于 Network | 阅读次数

优质博文

Neutron 拓扑框架

漫谈 Neutron 架构

漫步云中网络,第 2 部分

Neutron 理解 (1): Neutron 所实现的虚拟化网络 How Netruon Virtualizes Network

深入理解Neutron – OpenStack 网络实现

Openstack Admin Guide - Neutron

阅读全文 »

集线器、交换机、路由器 概念认识

发表于 2016-09-08 | 分类于 Network | 阅读次数

号称网络硬件三剑客的 集线器(Hub)、交换机(Switch)与路由器(Router) 一直都是网络界的活跃分子,但让很多初入网络之门的菜鸟恼火的是,它们三者不仅外观相似,而且经常呆在一起,要想分清谁是谁,感觉有点难!就让我们一起来看看它们之间有什么区别和联系吧!

三剑客的工作原理

一、集线器

1. 什么是集线器

在认识集线器之前,必须先了解一下中继器。在我们接触到的网络中,最简单的就是两台电脑通过两块网卡构成 双机互连,两块网卡之间一般是由非屏蔽双绞线来充当信号线的。由于双绞线在传输信号时信号功率会逐渐衰减,当信号衰减到一定程度时将造成信号失真,因此在保证信号质量的前提下,双绞线的最大传输距离为 100 米。当两台电脑之间的距离超过 100 米时,为了实现双机互连,人们便在这两台电脑之间安装一个 中继器,它的作用就是将已经衰减得不完整的信号经过整理,重新产生出完整的信号再继续传送。 中继器就是普通集线器的前身,集线器实际就是一种多端口的中继器。集线器一般有4、8、16、24、32等数量的 RJ45 接口,通过这些接口,集线器便能为相应数量的电脑完成 “中继” 功能。由于它在网络中处于一种 “中心” 位置,因此集线器也叫做 Hub 。

阅读全文 »

Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

发表于 2016-08-26 | 分类于 Kernel | 阅读次数

栈是什么?栈有什么作用?

首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈的特点,很容易的想到可以利用数组,来实现这种数据结构。但是本文要讨论的并不是软件层面的栈,而是硬件层面的栈。

栈结构

大多数的处理器架构,都有实现硬件栈。有专门的栈指针寄存器,以及特定的硬件指令来完成 入栈/出栈 的操作。例如在 ARM 架构上,R13 (SP) 指针是堆栈指针寄存器,而 PUSH 是用于压栈的汇编指令,POP 则是出栈的汇编指令。

阅读全文 »

mogrify - Shell下的图片处理工具

发表于 2016-08-21 | 分类于 Tools | 阅读次数

mogrify 是一个图形处理应用程序,Ubuntu 系统已经集成了此工具。它支持对图片的 resize, blur, crop, despeckle, dither, draw on, flip, re-sample 等操作。

还有 mogrify 很类似的图形处理工具 convert,只不过 mogrify 默认是直接在原图上进行修改(除非你使用 -format 后缀参数),而 convert 则不是。

mogrify 功能强大,并且也容易上手,下面我举一些简单的例子:

  • 等比例缩放图片
1
$ mogrify -resize 50% rose.jpg

rose
After 50%

阅读全文 »

Linux Kernel Development 读书笔记

发表于 2016-08-20 | 分类于 Kernel | 阅读次数

调度

  • Linux 的进程调度是基于 “处理器比重” 策略,具体实现通过 vruntime 成员。所有进程以各自的 vruntime 作为 Key,链接成为一个 RBTree。调度核心通过查找最小的 vruntime 对应的进程,作为下一刻需要运行的进程。vruntime 作为进程调度的核心,那它的计算方法是什么?

  • 应用程序进行系统调用(system call)时,通过 软中断(soft irq) 陷入内核态,将 系统调用号 以及 参数指针 通过 CPU 通用寄存器 传入(exp. eax, ebx…),由内核代表应用程序在 内核空间 执行系统调用。

  • Linux 内核常用的 内建数据结构 : 链表 list, 队列 kfifo, 映射 idr, 二叉树 rbtree


中断

  • Linux 中断实现机制怎样? 中断发生时,通过 中断向量表 跳转到预定义入口点。初始入口点将 中断号保存在栈中,然后跳转调用 unsigned int do_IRQ(struct pt_regs regs) 进行处理。因为 C 的调用惯例是要把函数参数放在 栈的顶部,因此可以从 pt_regs 结构中提取出中断号 进行进一步处理。

  • 什么是中断上下文?当执行一个中断处理程序时,内核即处于中断上下文 (interrupt context) 中。

  • 为什么中断里面不能休眠? 因为没有后备进程,所以中断上下文不可以休眠,否则又怎能对它重新调度呢? 这段话中的,后备进程 要怎么理解? 中断栈又是什么鬼?

阅读全文 »

C语言中类型数据所占字节数

发表于 2016-08-19 | 分类于 Language | 阅读次数

类型所占字节数和机器字长及编译器有关系,所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI / ISO 制订的):

  1. sizeof(short int) <= sizeof(int)
  2. sizeof(int) <= sizeof(long int)
  3. short int 至少应为 16位(2字节)
  4. long int 至少应为 32位。

32位编译器

类型 字节长度
char 1个字节
void *(指针变量) 4个字节
short int 2个字节
int 4个字节
unsigned int 4个字节
float 4个字节
double 8个字节
long 4个字节
unsigned long 4个字节
long long 8个字节
阅读全文 »

Ubuntu肉鸡记

发表于 2016-08-13 | 分类于 Network | 阅读次数

今天来和伙伴说说我这两天,亲历的一次网络安全问题。我之前对基础网络方面的知识确实没多少了解,并且正好在假期没什么事情,于是想着借着这次机会好好玩把。虽然已经抓到了木马程序,但是还没理解黑客是怎么黑进来的,估计主机里面还有黑客留的后门,但是中间的调试过程比较有趣。

- 发现问题

最近由于家里的网络环境速度突然非常糟糕,路由经常掉线,直接导致家里没法上网。主要表现在路由能正常拿到联通的 IP 地址,但是没法正常上网。于是直接更新路由固件至官网回信更新路由固件解决问题。掉线问题解决后,立马用 BOX 测下网速如何,1.2M/s 不错,没什么问题了。

到晚上了,准备 SSH 连上家里的 Ubuntu 搞点东西。先是发现 SSH 建立连接的时间比以前久多了,并且 SSH 连接上后,时不时的 shell 会卡住。这就奇怪了,这局域网内直连,怎么这么不稳定。于是我就用 Ubuntu 去 PING 下百度,发现要 150ms 多,这就不对了,家里 10M 带宽,怎么要怎么久。于是我再用 Notebook 去 PING 了下百度,却只要 50ms 左右。明显 Ubuntu 出了问题,于是马上登到路由管理页面,检查下 Ubuntu 主机的带宽情况。这一看吓一跳,就发现主机有 16M/s 的上行流量!

- 认识问题

家里的 Ubuntu 主机确实是安装了 Apache,但是并没有真正对外提供 WEB 服务,仅仅只是局域网内测试用。因此这 16M/s 的上行流量肯定是不正常的,SSH 卡顿应该就是因为主机的上行带宽都被占用了,没有多余的带宽给正常的服务。

阅读全文 »
123
KK

KK

27 日志
9 分类
2 标签
© 2020 KK