![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 81
zgege
借事修人
展开
-
centos6.5环境下安装yum工具
前不久因为安装数据库时动了yum安装文档中的参数,导致yum安装软件时总是出现no package等问题,决定重装yum工具。第一步:下载原有yum安装包[root@linux-node3 ~]# rpm -qa yumyum-3.4.3-150.el7.centos.noarch[root@linux-node3 ~]# rpm -qa | grep yum | xargs rpm ...原创 2018-09-02 14:07:09 · 7465 阅读 · 2 评论 -
Linux-网络编程学习框架
整体理解网络框架原创 2018-05-12 16:45:14 · 232 阅读 · 0 评论 -
Linux-netstat命令基本用法
作用:Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。 如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。在这篇教程中,我会列出几个例子,教大家如何使用 netstat 去查找网...原创 2018-05-12 14:57:45 · 927 阅读 · 0 评论 -
网络编程套接字-UDP
本文导航 内容 所占百分比 IP,端口号,网络字节序列基本概念 初步认识TCP,UDP协议 socket API的基本用法 实现一个简单的UDP客户端端/服务器 IP地址概念IP地址是在IP协议中, 用来来标识网络络中不同主机的地址;对于IPv4来说, IP地址是一个4字节, 32位的整数;我们通常也使用 “点分十进制” 的字符串表示IP地址, 例原创 2018-05-03 15:36:23 · 185 阅读 · 0 评论 -
Linux-进程间通信(消息对列)
消息队列是进程间通信的方式之一原创 2018-05-01 22:31:31 · 1331 阅读 · 0 评论 -
编程常见错误总结
Program terminated with signal 6, Aborted.No symbol table is loaded. Use the "file" command.Aborted (core dumped)(gdb) where#0 0x0000003aaa232925 in ?? ()#1 0x0000003aaa234105 in ?? ()#2 0...原创 2018-04-19 16:41:37 · 2533 阅读 · 0 评论 -
Linux-静态库和动态库
库有两种,一种是静态链接库,一种是动态链接库,不管是哪一种库,要使用它们,都要在程序中包含相应的include头文件。我们先来回顾一下程序编译的过程。如下图: 库:本质一个目标文件,这个文件的后缀有两种格式,对应两种库静态库 .a (linux环境下) .lib (Window环境下)动态库 .so (linux环境下) ....原创 2018-03-30 16:57:53 · 165 阅读 · 0 评论 -
Linux_环境变量
思维导图:基本概念环境变量一般是指在操作系统用来指定操作系统运行环境的一些参数,环境变量是在操作系统中具有一个特定名字的对象,它包含了一个或多个应用程序所将要使用到的信息.比如当我们编写c代码,在链接的时候。从来不知道我们所连接的动态在哪里,但是我们依然可以连接成功,产生可执行程序,原因就是有相关环境变量在帮助编译器进行查找动态链接库。环境变量通常具有一些特殊用途,在系...原创 2018-03-19 01:02:38 · 248 阅读 · 0 评论 -
Linux开发工具的那些事儿
本文主要目标vim自行查找资料, 自行配置插件. 自行查找资料, 调研除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点. 自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台). 为什么调试的时候需要编译选项中添加 -g. 同学们自行调研readelf命令. 在Linux下实现进度条程序. 通过makefile进行编译原创 2018-03-12 00:06:17 · 285 阅读 · 0 评论 -
linux命令及权限
本文目标:2. 进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限. 3. 查找资料, 了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp 4. 查找资料, 了解以下重要命令. du, df, top, free, pstack, ...原创 2018-03-06 23:04:01 · 4834 阅读 · 1 评论 -
网络编程套接字-TCP
本文旨在实现TCP套接字通信的单进程版本,多进程版本,多线程版本makefile.PHONY:allall:tcpServer tcpClienttcpServer:tcpServer.c gcc -o $@ $^tcpClient:tcpClient.c gcc -o $@ $^.PHONY:cleanclean: rm -f tcpServer t...原创 2018-05-06 23:31:25 · 221 阅读 · 0 评论 -
网络编程-传输层(端口号)
端口号定义:端口号主要运用于传输层上,用来标识同一台计算机中进行通信的不同应用程序(进程)。因此也被成为应用程序地址。根据端口号识别应用在一台计算机上可以同时运行着很多应用程序。比如接受万维网服务的web浏览器,远程登录的ssh客户端等程序都可以运行。传输层协议正是利用这些端口来区分本机中正在进行通信的应用程序,并准确将数据传输 (如下图,根据端口号识别应用图) 通过IP地...原创 2018-05-17 23:22:21 · 12382 阅读 · 0 评论 -
Linux-死锁学习(上)
内容 所占百分比 死锁概念 %30 资源 %25 死锁模型 %5 处理死锁的四种策略 %40死锁的概念死锁是进程死锁的简称,是由Dijkstra于1965年研究银行家算法时首先提出来的。它是计算机操作系统乃至并发程序设计中最难处理的问题之一。实际上,死锁问题不仅在计算机系统中存在,在我们日常生活中它也广泛存在。什...原创 2018-04-24 20:16:46 · 233 阅读 · 0 评论 -
Linux死锁学习(下)
在上一篇博客中介绍了死锁概念提出了一些解决方法,在本文中便会具体介绍解决死锁的办法鸵鸟算法传说中鸵鸟看到危险就把头埋在地底下。当你对某一件事情没有一个很好的解决方法时,那就忽略它,就像鸵鸟面对危险时会把它深埋在沙砾中,装作看不到。这样的算法称为“鸵鸟算法“。在针对死锁问题时:鸵鸟算法就是忽略死锁,不去处理死锁。鸵鸟算法可以称之为不是办法的办法。在计算机科学中,鸵鸟算法是解决潜在...原创 2018-04-26 15:38:40 · 771 阅读 · 0 评论 -
Linux-进程间通信(信号量)
稍后更新原创 2018-05-04 10:29:26 · 116 阅读 · 0 评论 -
Linux-进程间通信(共享内存)
稍后更新原创 2018-05-04 10:28:26 · 112 阅读 · 0 评论 -
Liinux-文件系统EXT2,EXT3区别
概念;EXT2、EXT3:linux环境上的文件系统。ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。**EXT2、EXT3的区别如下:(1)ext2和ext3的格式完全相同,只是在ext3硬盘最后面有一部分空间用来存放Journal(日志)的记录; ...原创 2018-05-03 21:55:09 · 328 阅读 · 0 评论 -
Linux-进程间关系与守护进程
进程组概念:进程组是一个或多个进程的集合查看命令 ps axj | grep sleep | grep -v grepa:不仅列出当前用户进程。也列出其他所有其他用户的进程x:不仅列出有控制端的进程,也列出所有其他所有无控制端的进程 j:列出所有与作业控制相关的信息grep sleep:查看只含sleep的信息grep -v grep:不看grep进程信息当我们输入命令,“回车键一按原创 2018-04-22 23:53:36 · 243 阅读 · 0 评论 -
Linux-进程信号(上)
本文思维导图如下: 信号基本概念举例从生活角度出发:当我们过马路上,看见红绿灯指示灯上的红灯正亮着。我们就会自觉停下脚步,等红灯灭才会过马路。这个例子中,红灯就是一种信号。通知我们:此时不可以过马路。而我们就会对这个信号做出反应:停下脚步。不过马路从专业角度出发:用户输入命令,shell下启动一个进程。如果这时,我按下一个 ctrl+c,这时键盘产生一个中断。...原创 2018-04-08 17:47:41 · 429 阅读 · 0 评论 -
Linux-进程信号(下)
信号捕捉信号捕捉分析图如下 分析过程:如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程⽐较复杂,举例如下: 用户程序注册了SIGQUIT信号的处理函数sighandler。 当 前正在执行main函数,这时发生中断或异常切换到内核态。 在中断处理完毕后要返回⽤户态的main函数之前检查到有信号SIGQUIT递达。 内核原创 2018-04-09 00:21:36 · 217 阅读 · 0 评论 -
Linux-gdb进程调试
gdb调试一个进程的过程以下面模拟实现sleep()函数为例#include <stdio.h>#include <unistd.h>#include <signal.h>void wakeup(int signo){ //do nothing}unsigned int mysleep(unsigned int t){ struct sigaction new,原创 2018-04-09 08:59:11 · 6908 阅读 · 0 评论 -
Linux-进程间通信(管道)
本文导航 内容 所占百分比 进程间通信介绍 5% 管道 30% 消息队列 35% 共享内存 15% 信号量 15%进程间通信介绍进程间通信背景进程具有独立性我们知道,进程与进程之间,相互独立,就像两个家庭,家庭与家庭有着不同的生活方式和目标。进程也一样,但是,如果完全独立,,系统就是分散沙化...原创 2018-04-14 14:09:12 · 160 阅读 · 0 评论 -
shell的简单实现
主要思路:获取命令行解析命令行建立一个子进程替换子进程程序父进程等待子进程退出代码如下#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>#include <string.h>#include <ctype.h>#include <stdlib.h>char *argv原创 2018-04-02 13:21:03 · 238 阅读 · 0 评论 -
Linux-进程控制
进程创建fork函数创建子进程#include <unistd.h>pid_t fork(void);返回值:子进程返回0;父进程返回子进程id.出错返回-1这个函数有两个返回值,一般用if分流函数实现过程:进程调用fork,将控制转移到内核,内核开始工作 1.分配内存块和数据块给子进程 2.将父进程的数据和代码拷贝给子进程 3.添加子进程到进程列表当...原创 2018-04-01 20:43:47 · 179 阅读 · 0 评论 -
Linux-基础IO之文件描述符和重定向
系统调用函数在了解文件描述符之前,先来认识几个系统接口,即系统调用函数 open(),close() read() ,write()进程是通过调用open函数来打开一个已经存在的文件或创建一个不存在的文件: #include <sys/types.h> #include <sys/stat.h> #include <...原创 2018-03-24 23:29:27 · 292 阅读 · 0 评论 -
Linux-进程调度算法
本文思维导图 进程调度概念与时机调度概念:单处理器:处理机从就绪队列中挑选下一个占用CPU运行的进程。 多处理器:从多个CPU中挑选就绪进程可使用的CPU**资源**,也就是挑选一个CPU供进程使用。时机:对于非抢占系统` 进程从运行状态切换到等待状态。由于进程要等待某个事件,即使CPU给我资源,我也不没办法使用,这时进程就由运行状态切换到等待状...原创 2018-03-23 17:18:11 · 512 阅读 · 0 评论 -
Linux-僵尸进程和孤儿进程
linux,进程模型下,进程通过父进程产生子进程,子进程又产生子进程,子子孙孙又繁衍生息,每个子进程都有着各自的使命,相互配合,完成各项功能。当使命完成,子进程结束生命进程,被父进程回收。父进程调用wait()或者waitpid()系统函数取得子进程终止状态。如果一个子进程结束进程,他的父进程一直不读取他的退出信息,这些信息就会一直占用着资源,这些占用资源又不执行任务的进程,就会变成僵尸进程。...原创 2018-03-15 23:52:25 · 301 阅读 · 0 评论 -
Linux-进程初识之task-struct-PCB
认识进程进程定义:1.是程序的一个执行实例2.是正在执行的程序通俗的讲进程就是程序被加载到内存中, 等待CPU处理时或正在被CPU处理的程序就被叫做进程。由此我们可以知道,程序和进程的区别:1.程序是静止的,存在于硬盘上,也就是外设上,而进程是动态的,进程存在与内存中2.进程是动态的,进程存在与内存中。3.进程是有生命周期和生命状态的进程描述程序被加载到内存中,操作系统会为它分配一块空间,用原创 2018-03-15 19:34:04 · 526 阅读 · 0 评论 -
Linux-复习大纲
Linux系统编程初步学习完毕,先将最近所学整理,便于查缺补漏和日后复习。 只列出了大概知识点。这里面每一个分支都可以延生到很多知识点。后面会继续补充原创 2018-04-22 23:58:07 · 293 阅读 · 2 评论 -
Linux-线程同步与互斥
线程互斥线程互斥的产生条件在了解线程的基本知识后,我们知道,对于线程而言,所有线程共享进程的地址空间。在进程中的文件描述符,信号处理方式,定义的全局变量,所有线程都可以看到。线程通过共享这些资源的方式,完成线程间的交互。我们把这些可以共享的资源叫做临界资源。程序访问临界资源的代码区,叫做临界区。 那么当多个线程并发的去操作临界资源时,就会引发一些问题。比如访问一个全局变量。就会导致数据不一致问题。原创 2018-04-18 17:38:41 · 209 阅读 · 0 评论 -
Linux-线程学习(上)
本文导航: 内容 所占百分比 线程概念 40% 线程与进程区别与联系 20% 线程优缺点 10% 线程控制(创建,终止,等待) 30%线程的概念谈到线程,我们先从进程说起。我们写的程序从硬盘加载到内存开始运行时,进程就产生了。也就是操作系统开始为这个程序创建PCB,分配系统资源,比如分配一块虚拟地址空间,一个页表,一块物理内存。当这个进程内部有多个执行流时,现原创 2018-04-12 16:18:20 · 8631 阅读 · 3 评论 -
关于虚拟内存(未完)
1. 虚拟存储的需求背景计算机系统经常出现内存不够用内存不够用常常是由操作系统内部多进程,多线程并发下提高的导致的情况,为了解决内存不够用的情况,有一下三种方法可以避免。覆盖:应用程序手动把需要的指令和数据保存在内存中。比如我的代码在内存中存储不下了,我可以根据代码之间的逻辑关系分块,将他们复用到一块区域来,但当你要用时,在放到内存中。缺点:应用开发难,调用关系复杂交换:操作系统自动把暂时不能原创 2018-03-18 21:07:04 · 169 阅读 · 0 评论