- 博客(42)
- 资源 (28)
- 收藏
- 关注
原创 操作系统面试指南
1、请分别简单说一说进程和线程以及它们的区别。进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位。线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程可以有多个线程,多个线程也可以并发执行。4、进程间的通信方式有哪些?(1) 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。(2)有名管道 (named
2020-08-03 10:06:06
278
转载 C++工程师学习内容
C++是最贴近底层编程语言。在性能方面上,有着无可替代的优势特别是对于很多游戏开发公司来说,C++尤其适合作为后端服务的开发语言。在一些对于并发性能要求较高的业务上,C++也有绝对的优势。因此大部分公司的核心业务都是用C++进行开发,C++工程师掌握着公司最核心最重要的业务体系,有着十分重要的地位。二、我想成为一名C/C++工程师,该学习哪些内容呢?1、学会C语言数据类型、流程控制、函数、指针 内存布局、结构体、共用体、文件操作 小项目:可以自己设计一个通讯录 主要是二级指针,结构体,文件的操作
2020-08-02 20:18:39
3153
转载 进程间通信总结
进程间通信总结正文每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些?管道如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。$ ps auxf | grep mysql上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的输出,作为后一个命令(grep mysql)的输入,从这功...
2020-08-02 19:27:13
728
原创 sell脚本小技巧
1.统计文件个数:ls -a | wc -w注意:wc file1 file2 ...输出各个文件的行数、字数、字节数也可以用-l -w -c指定单独输出行数、字数和字节数。2.合并两个文件内容到file3cat file1 file2 > file33.从键盘输入内容到filecat > file4.重定向cmd 2> out.txt ,将错误输出重定向到文件cmd 1> out.txt 等效于 cmd > out,都是将标准输出重定向到文
2020-07-28 10:15:17
338
原创 Linux内核钻研好的书籍
Linux内核钻研过程中遇到的好书记录:《ARM Linux内核源代码分析》《Linux内核深度解析》《奔跑吧 Linux内核:基于Linux 4.x内核源代码问题分析》《深入Linux内核架构》《深入理解Linux内核》《Linux内核设计与实现》《Linux设备驱动程序》《深入理解Linux虚拟内存管理》...
2020-07-25 10:28:13
208
原创 linux内核常见问题
0x00 题目总览主要有哪几种内核锁?Linux 内核的同步机制是什么? Linux 中的用户模式和内核模式是什么含义? 怎么申请大块内存?vmalloc 和 kmalloc 有什么区别? 进程间通信主要有哪几种方式? 伙伴系统申请内存的函数有哪些? 通过 slab 分配器申请内存的函数有哪些? Linux 的内核空间和用户空间如何划分的?进程地址空间布局图? vmalloc() 申请内存有什么特点? 用户程序使用 malloc() 申请的内存空间在什么范围? 在支持并使能 MMU 的
2020-07-24 09:17:12
346
原创 用户态和内核态
1.一句话概括:用户模式只能通过系统调用操作硬件资源,内核模式可以直接操作硬件资源。2.具体介绍:内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。3.为什么要有用户态和内核态?由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级
2020-07-24 09:16:44
124
原创 linux内核时间管理
1.节拍率系统定时器频率是通过静态预处理定义的,也就是HZ,在系统启动时按照Hz对硬件进行设置。体系结构不同,HZ的值也不同。内核在文件<asm/param.h>中定义了HZ的实际值,节拍率就是HZ,周期为1/HZ。i386的节拍率为1000,其它体系结构(包括ARM)的节拍率多数都等于100。2.jiffies全局变量jiffies用来记录自系统启动以来产生的节拍的总数。启动时,内核将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值。因...
2020-07-21 09:20:01
802
原创 gnuplot使用小教程
set terminal postscript eps size 8cm, 6cm color solid # 设置导出的文件格式,尺寸set term pngset output "$0"set output ‘a.eps’set multiplot %设置为多图模式set title “cbr_delay” font “Times-Roman,12”set xlabel “simulation time”set ylabel “delay time”set grid..
2020-07-20 16:33:31
477
原创 struct timer_list定时器使用
内核模块源码实例:/* 内核定时器测试模块 */#include <linux/kernel.h> //内核#include <linux/module.h> //内核模块#include <linux/init.h> //模块初始化和注销#include <linux/slab.h> //屋里内存分配管理#include <linux/list.h>...
2020-07-20 10:36:04
1390
原创 用make-kpkg编译Debain/Ubuntu系统内核
step1:安装依赖工具sudo apt-get install kernel-package build-essential libncurses5-dev fakeroot libssl-dev bcstep2:设置配置文件cp /boot/config-4.13.0-generic .config”make menuconfigstep3:运行命令fakeroot make-kpkg --initrd --revision zjh --append-to-version -..
2020-07-20 10:09:30
413
原创 UDT协议拥塞控制机制总结
UDT协议拥塞控制机制总结重要名词:SYN:DT increases its sending rate every 10 milliseconds, this constant time is defined asSYN.SND:据包发送时间间隔,决定了数据包发送速率。UDT允许用户访问两个拥塞控制参数:拥塞窗口大小和包与包之间的发送间隔。用户可以调整这两个参数来实现基于窗口的...
2019-06-30 11:30:07
1103
转载 UDT协议的拥塞控制
The UDT Congestion Control Algorithm Yunhong Gu Aug. 2009 OVERVIEW UDT uses an AIMD (additive increase multiplicative decrease) style congestion control algorithm. The algorithm...
2019-06-30 10:16:37
760
转载 交叉熵损失函数
1. softmax层的作用通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节点,即便是ResNet取消了全连接层,但1000个节点的输出层还在。一般情况下,最后一个输出层的节点个数与分类任务的目标数相等。假设最后的节点数为N,那么对于每一个样例,神经网络可以得到一个N...
2019-04-09 09:41:53
534
原创 linux4.4内核模块sys_ctl编程
module源码:#include <linux/init.h>#include <linux/module.h>#include <linux/sysctl.h>#include <linux/kernel.h>static char path[] = "net/test";static int zero = 0;static ...
2019-03-17 20:56:04
459
转载 ubuntu安装sogou输入法
1、安装依赖sudo apt-get install fcitx libssh2-12、从搜狗官网下载deb包下载32位:wget "http://pinyin.sogou.com/linux/download.php?f=linux&bit=32" -O "sougou_32.deb"下载64位:wget "http://pinyin.sogou.com/linux...
2019-03-17 11:04:16
159
原创 内核启动之start_kernel()和rest_init()函数
start_kernel启动过程分析start_kernel()函数在init/main.c文件里。内核的初始化程序在start_kernel这个函数中,可以在线查看这些代码: start_kernel。通过阅读start_kernel代码,可以大致了解到内核在初始化的时候,做了以下工作:1. lockdep_init():初始化内核依赖关系表,初始化hash表boot_init_st...
2019-03-01 19:01:27
2219
原创 vim自由翅膀
行首:0,^行尾:$调到下一个字符a前:fa 调到前一个字符a前:Fa第一行:gg最后一行:G第n行:nG,ngg 删除当前行到第一行:dgg删除当前行到最后一行:dG删除当前行到第n行:dnG删除当前行当前字符到最后一个字符:d$删除当前行当前字符到第一个字符:d0,d^ 复制当前行到第一行:ygg复制当前行到最后一行:yG删...
2019-01-28 16:11:19
203
原创 linux shell编程
传入参数$0:命令名称$1-n:参数$#:参数个数$*:所有参数一个字符串$@:所有参数空格分隔$?:上一个命令退出状态while [ $# -gt 0 ]doecho $1shiftdone变量1.定义与引用a=1echo $a2.引号是为了区分分隔而存在,特别是为了包含空格!a="1 2"echo $aecho 123...
2019-01-28 15:36:15
179
原创 Linux TCP拥塞控制接口
Linux TCP拥塞控制接口本文分析所采用的Linux版本为4.18Linux系统中的TCP拥塞控制采用面向对象的设计思想,提供拥塞控制接口用于实现不同的拥塞控制策略,主要实现文件在tcp_cong.c中。基本数据结构tcp_cong_list为拥塞支持的拥塞控制策略(算法实现)的列表,列表中的每一表项对应一种拥塞控制策略的具体实现。tcp_cong_list_lock为控制并...
2019-01-27 10:39:51
1565
原创 linux内核如何让tcp_rcv_space_adjust()函数运行自己模块指定的函数
1.net/ipv4/tcp_input.c修改:EXPORT_SYMBOL(sysctl_tcp_moderate_rcvbuf);void rcp_rcv_initial(struct sock *sk){}void (*new_tcp_rcv_fp)(struct sock * )=&rcp_rcv_initial;EXPORT_SYMBOL(new_tcp_rc...
2019-01-20 09:54:06
566
原创 ubuntu linux图形界面启动过程
1.一些重要文件/usr/bin/startx:核心脚本文件 /usr/bin/xinitx :x window 启动程序,用法xinit "x window client" "x window server" /usr/bin/X11/Xorg:主流x window server程序2./usr/bin/startx核心脚本文件里主要运行了xinit "x window client...
2019-01-19 10:29:52
2691
原创 在ubuntu下编译安装内核
编译安装新内核1.下载源码,进入源码根目录2.make mrproper 2.复制已有系统/boot/config-xxx到源码根目录.config3.make menuconfig,选择load选项,保存,退出。4.make -j85.make modules_install6.make install7.update-grub安装内核原理复制编译完的模块...
2019-01-16 21:03:51
460
原创 给ubuntu程序加启动桌面图标
每次打开程序都需要通过终端的话,那样太麻烦了,可以通过添加一个快捷启动方式,像Windows系统那样,双击图标打开程序 首先,在桌面创建一个文件:pycharm.desktop 2 编辑这个文件,添加以下内容(Exec是sh文件位置,icon是图标文件位置): [Desktop Entry] Version=1.0 Type=Application Na...
2018-12-07 08:10:02
393
原创 如何让PHP通过ROOT权限来执行LINUX命令
一般 PHP 在 LINUX 服务器上执行 shell 命令时,只能拥有 www:www 账户权限,想执行一些系统命令是没有权限的,如重启 apache,因为控制 apache 需要 root 权限,因此下面的办法可以让 PHP 执行 ROOT 权限的命令。 1、建立一个 C 语言文件,test.c,里面内容如下#include#include#include <sys/type...
2018-11-04 14:18:39
578
原创 无法远程登陆ubuntu下的mysql问题解决方案
使用命令:mysql -hserverip -uroot -p后报错如下:ERROR 2003 (HY000): Can't connect to MySQL server on '39.108.140.97' (111)解决方案:把/etc/mysql/mysql.conf.d/mysqld.cnf文件中的bind-address = 127.0.0.1行注...
2018-11-02 10:49:19
200
原创 apache2 CGI配置
1.正确安装apache2。sudo apt-get install apache2。(如果是源码安装,本文不适用,请看本人相邻文章)2.在服务的要目录下,建立一个文件夹 cgi-bin.路径为 /var/www/cgi-bin. (名字约定是cgi-bin,不能是其他名字,cgi程序都放在这个cgi-bin的目录)3.到/etc/apahce2/文件夹下。把/etc/apache2...
2018-11-01 09:34:04
3433
原创 apache2安装ssl证书
1.开启ssl模块a2enmod ssl脚本解读:a2 指的是apache2en 指的是enabledmod 指的是model2.启动ssl站点a2ensite default-ssl脚本解读:a2 > apache2en > enabledsite > 站点3.加入监听端口vim /etc/apache2/ports.conf编辑apache的端...
2018-11-01 09:01:10
2721
原创 apache2配置目录教程
apache2服务器的配置文件在 /etc/apache2目录下,里面有配置:1、apaceh2.conf、2、端口配置文件port.conf、3、mods-enable文件夹,这个文件夹下都是*.load和*.conf后缀的文件。4、site-enable文件夹,这个文件夹下都是*.conf后缀的文件。我们再接着看apache2.conf的内容:第一句的大致意思就是在说,...
2018-11-01 08:51:26
1471
原创 安装lamp教程
步骤一,安装apache2 1 sudo apt-get install apache2 安装完成。 运行如下命令重启下: 1 sudo /etc/init.d/apache2 restart 在浏览器里输入http://localhost或者是http://127.0.0.1,如果看到了It works!,...
2018-11-01 08:34:36
456
原创 ubuntu 环境下的QT程序打包
很多时候,我们需要打包发布一些程序,今天来说一下如何打包发布QT程序:1、QtCreator使用Release版本编译生成可执行程序2、将可执行程序复制到/opt/wdz/qtdemo/目录下(这个目录也可以自己建)3、终端下使用ldd命令查看需要的连接库:ldd untitled234242424、ldd查询到的所有需要的库导出在这里,我们可以自己写一个shell脚本: vi...
2018-10-24 16:25:56
1059
1
转载 ubuntu三行命令安装chrome浏览器
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome*sudo apt-get install -fsudo apt install --reinstall libnss3
2018-10-21 08:30:15
581
转载 Uboot到底如何启动内核(转自韦东山老师的博客)
1.uboot启动内核的代码缩减如下:Uboot 1.16/lib_arm/board.c中start_armboot()函数调用/common/main.c中main_loop()函数,在main_loop()中有uboot启动内核的代码:s = getenv ("bootcmd");debug ("### main_loop: bootcmd=\"%s\"\n"...
2018-06-11 16:08:59
691
转载 JZ2440 Uboot 启动过程分析续
通过上一节的分析我们知道:1、 Uboot的第一个启动文件为:cpu/arm920t/start.o2、 连接脚本/board/100ask24x0/u-boot.lds 连接地址为0x33f80000 下面开始分析Start.s.globl_start_start: b reset 一、首先跳转到 reset 1、首先将MCU设置成 SVC32模式2、关闭看门狗3、 ...
2018-06-11 14:23:38
309
转载 shell编程expect用法
shell脚本需要交互的地方可以使用here文档是实现,但是有些命令却需要用户手动去就交互如passwd、scp对自动部署免去用户交互很痛苦,expect能很好的解决这类问题。expect的核心是spawn expect send setspawn 调用要执行的命令expect 等待命令提示信息的出现,也就是捕捉用户输入的提示:send 发送需要交互的值,替代了用户手动输入内容set 设置变量值i...
2018-06-08 14:11:27
14858
转载 组合键的ascil
组合键的阿斯克码表:DecOctHexCharComments000000CTRL-@NUL (Null)100101CTRL-ASOH (Start of heading)200202CTRL-BSTX (Start of text)300303CTRL-CETX (End of text)400404CTRL-DEOT (End of transmission)500505CTRL-EENQ ...
2018-06-08 14:06:45
301
转载 shell编程发送按键
在linux下面的组合键实际就是ASCII ,想要模拟某个组合键,在程序中发送这个组合键的ASCII即可,比如:CTRL-A的ASCII是 01; 下面是一段自动打开minicom程序,并设置输入回显。#!/usr/bin/expectspawn minicomexpect "Press CTRL-A Z for help"send "\01" send ...
2018-06-08 14:05:31
3394
原创 ubuntu下使用jlink调试s3c2440
2.4 使用u-boot烧写Flash以例子为例,假设需要烧写一个名为leds.bin的程序到Nor、Nand Flash,那么请参考:(1).通过Jlink下载:在J-Link commander里执行:hloadbin e:\leds.bin 0x30000000g注意leds.bin的大小(2).通过u-boot烧写到Nor Flash:在u-boot里执行:protect off all ...
2018-06-07 19:22:40
821
TensorFlow实战 - 黄文坚高清完整pdf加完整源代码
2019-04-09
最小bootloader的实现,完整源代码
2018-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人