
操作系统和编译器
define_us
互联网编程/架构设计/数学崇拜
展开
-
posix
背景POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准。posix是IEEE制定的unix系统标准。目的是方便程序在不同unix操作系统之间进行移植。发展成熟于1991年~1993年。unix系统遵从了posix规范。linux也恰恰是在这个时段被开发的。所以Linus从一开始就对posix极为感兴趣。linux对unix有着良好的支持。window原创 2022-02-14 12:19:25 · 350 阅读 · 0 评论 -
linux命令之vmstat
$ vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st4294939112 0 0 61296 0 5746148 0 0 134 2602 0 0 1 1 93原创 2021-01-10 10:31:17 · 104 阅读 · 0 评论 -
虚拟化技术——虚拟机
给你一个终端,你如何确定自己连接的机器是一台物理机器还是虚拟机呢?如果是虚拟机,那么又是采用如何的虚拟化方案呢?输入上面的命令,可以看出我们这台机器采用的是KVM的虚拟化方案。当然其他一些虚拟化方案(如VMWare)...原创 2018-11-02 17:10:36 · 217 阅读 · 0 评论 -
linux和磁盘(1):基本概念
磁盘 分区 和卷卷和分区差距很大, 一个分区是一个物理磁盘连续空间。一个卷却可以跨越多达32个物理磁盘,这在服务器上是非常实用的功能。在我们自己的PC上,一般把磁盘分为主分区、扩展分区、逻辑分区(实际上也就是2个分区,主分区和扩展分区)。一般一个物理磁盘的最大分区数目仅仅为4,这个是因为磁盘的MBR只有64个字节。一个硬盘的主分区也就是包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上...原创 2018-10-23 15:53:53 · 377 阅读 · 0 评论 -
Linux和网络
Linux服务器可以安装多个网卡,LINUX最多可以支持255个IP子网卡。原创 2018-08-24 16:26:21 · 755 阅读 · 0 评论 -
操作系统的前世今生
1960s CTSS 分时操作系统,可以让大型主机供多个终端机使用。但是最多支持30个终端使用,为了开发支持更多终端的主机操作系统,AT&T的Bell实验室,MIT,GE发起了Multics项目。后来失败,BELL退出。 1969 Unics。BELL中的一名工程师用汇编语言,因为将Multics项目简化不少,被戏称为Uics。有将所有程序和系统配置都是文件的思想 1972 AT&am...原创 2018-08-24 13:42:53 · 1126 阅读 · 0 评论 -
linux的内核
linux内核版本可以从以下两个命令查看cat /proc/versionuname -alinux源代码目录arch - 这个文件夹包含了一个Kconfig文件,它用于设置这个目录里的源代码编译所需的一系列设定。每个支持的处理器架构都在arch文件夹它相应的文件夹中。如,Alpha处理器的源代码在alpha文件夹中。请记住,随着时间的推移,一些新的处理器将被支持,有些会被...原创 2018-08-24 13:31:37 · 243 阅读 · 0 评论 -
Linux中的设备
关于Linux中的设备文件,设备文件用来为操作系统和用户提供它们代表的设备接口。所有的Linux设备文件均位于/dev目录下,是根(/)文件系统的一个组成部分,因为这些设备文件在操作系统启动过程中必须可以使用。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备...原创 2018-08-24 13:13:32 · 242 阅读 · 0 评论 -
Linux中的内存
概述首先,我们可以查看内存。[jboss5@i5315234391-9 ~]$ free -mh total used free shared buff/cache availableMem: 7.6G 156M 6.2G 368M 1....原创 2018-08-24 11:10:12 · 363 阅读 · 0 评论 -
linux中的系统调用的实现
概念一般的,进程是不能访问内核的。它不能访问内核所占内存空间也不能调用内核函数,因为内核驻留在受保护的地址空间上。运行用户代码时,CPU处于用户态,不能访问内核的地址。所以,应用程序应该以某种方式通知系统,告诉内核自己需要执行一个系统调用,希望系统切换到内核态,这样内核就可以代表应用程序来执行该系统调用了。通知内核的机制是靠软件中断实现的。首先,用户程序为系统调用设置参数。其中一个参数是系...原创 2018-08-23 16:39:18 · 412 阅读 · 0 评论 -
Linux中和POSIX标准
Linux的API是遵循POSIX标准的 POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945...原创 2018-08-23 16:20:09 · 4965 阅读 · 0 评论 -
linux中的文件
文件UNIX认为一切都是文件。Linux做了修改,认为一切都是字节流。最常用的的命令是ls -ltLinux中显示的文件大小都是以字节为单位,文件夹的大小是4kb。linux也支持隐藏文件,以.开头。如果要查看隐藏文件,请加上-a选项。##第一个字母p表示这是一个命名管道prw-r--r-- 1 jboss5 jboss 0 9月 17 10:20 pipe_test...原创 2018-11-02 13:41:13 · 430 阅读 · 0 评论 -
linux中的namespace
名称空间是在OS之上实现容器与主机隔离,以及容器之间互相隔离的Linux内核核心技术。原创 2018-11-02 16:23:30 · 362 阅读 · 0 评论 -
docker详解
推荐和参考文章http://dockone.io/article/2125从虚拟机到docker知名的虚拟机解决方案有KVM、Virtualbox、Vmware。而docker的解决方案是docker的技术原理linux的namespaceslinux的CGroups...原创 2018-11-02 16:30:39 · 172 阅读 · 0 评论 -
linux常见内核优化
cat /etc/sysctl.confsysctl -p ## 这个可能需要权限#表示进程(例如一个worker进程)可能同时打开的最大句柄数,直接限制最大并发连接数fs.file max = 999999#1代表允许将状态为TIME-WAIT状态的socket连接重新用于新的连接。对于服务器来说有意义,因为有大量的TIME-WAIT状态的连接 net.ipv4.tcp_tw_re...原创 2019-01-28 11:07:08 · 1288 阅读 · 0 评论 -
AWK
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file[-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value’ ’ 引用代码块BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符,没有可以不写// ...原创 2019-01-26 15:04:24 · 123 阅读 · 0 评论 -
操作系统和中断
硬中断和软中断硬中断由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。硬中断是可以屏蔽的,软中断是不可以屏蔽的。软中断则是手动由中断指令产生。内核不会立即处理重新触发的软中断。当大量软中断出现的时候,内核会唤醒一组内核线程来处理。这些线程的优先级最低(nice...原创 2019-01-24 16:01:39 · 642 阅读 · 0 评论 -
linux与网络之NAT
在linux操作系统中,Netfilter组件是集成在linux内核中扩展各种网络服务的结构化底层框架,在内核级提供防火墙功能。内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则。报文流向:...原创 2018-11-14 17:09:44 · 263 阅读 · 0 评论 -
docker环境搭建
AUFS(可选)centos并不支持AUFS。可以参考https://github.com/bnied/kernel-ml-aufs在Ubuntu 14.04下,Docker 默认 Ubuntu的 AUFS。RedHat 上使用的是 devicemapper。原创 2018-11-05 16:10:04 · 124 阅读 · 0 评论 -
linux的计算机的启动
一般来说,整个系统的启动流程如下1.加载BIOS的硬件信息并进行自我测试,并依据设置取得第一个可启动设备2.读取并执行第一个可启动设备内的MBR的boot loader(即grub等程序)3.根据bootloader的设置加载kernel。kernel开始检测硬件并加载驱动程序4.硬件驱动成功后,kernel会调用init进程,init获得当前设置的run-level5.init执行/e...原创 2018-11-05 15:16:38 · 150 阅读 · 0 评论 -
linux的内核进程/线程
linux启动后,内核自动执行如下线程kthreadd:这种内核线程只有一个,它的作用是管理调度其它的内核线程。它在内核初始化的时候被创建,会循环运行一个叫做kthreadd的函数,该函数的作用是运行kthread_create_list全局链表中维护的kthread。可以调用kthread_create创建一个kthread,它会被加入到kthread_create_list链表中,同时kth...原创 2018-11-02 17:30:44 · 1638 阅读 · 0 评论 -
linux中的CGroup介绍
参考文献https://www.cnblogs.com/caoxiaojian/p/5633430.htmlCGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制。2007 年进入 Linux 2.6.24 内核,CGroups 不是...原创 2018-11-02 14:54:07 · 2010 阅读 · 0 评论 -
linux中的线程
参考文献https://www.zhihu.com/question/25367227基本概念首先Linux并不存在真正的线程,Linux的线程是使用进程模拟的。 从内核来讲,并没有线程的概念,linux把线程当做进程来实现。内核并没有特殊的调度算法或者定义特别的数据结构来表征线程。线程仅被看做一个与其它进程共享某些资源的进程。每个线程都拥有唯一属于自己的task_struct,所以...原创 2018-08-23 16:11:19 · 309 阅读 · 0 评论 -
linux中的进程
进程的创建在Linux中主要提供了fork、vfork、clone三个进程创建方法。 fork()调用执行一次返回两个值,对于父进程,fork函数返回子程序的进程号,而对于子程序,fork函数则返回零,这就是一个函数返回两次的本质。#include<stdio.h> #include<sys/types.h&amp原创 2018-08-23 14:59:32 · 223 阅读 · 0 评论 -
linux系统的网络IO(select/epoll)
参考文献https://blog.youkuaiyun.com/davidsguo008/article/details/73556811 https://www.cnblogs.com/ccsccs/articles/4224253.htmlselect函数原型如下://sys/select.h int select(int maxfdp1, fd_set *readset,...原创 2018-08-10 18:38:22 · 2655 阅读 · 0 评论 -
GCC
$ gcc hello.c -o hello$ ./hello原创 2015-04-08 00:45:08 · 477 阅读 · 0 评论 -
linux基础教程(7)数据库操作与使用
转载自下面链接,有改动http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d7(1)mysql数据库相关操作登录mysql,登录当前主机 -h 主机名可以省略mysql -h 主机名 -u 用户名 -p;注意,登录数据库后所有命令以分号结尾--------------------------转载 2015-03-29 19:33:36 · 463 阅读 · 0 评论 -
linux操作系统基础(2)脚本的使用
(1)学习脚本之前必须掌握的知识alias 命令可以用来指定长命令的简写,直接输入alias可以查看目前系统内的等效命令系统存在环境变量,可以用env命令来查看。用户也可以自定义用户变量,并可以讲该变量共享给所有用户。如果不选择共享,则该变量将在关闭该终端(shell窗口后失效)。可以使用set命令来查看环境变量和用户变量。原创 2015-03-12 13:17:12 · 418 阅读 · 0 评论 -
linux操作系统基础(4)文件系统和磁盘管理
(1)文件系统磁盘设备的使用有三个步骤,第一创建新分区,第二指定文件系统,第三进行挂载。没有文件系统的设备被称为裸设备创建文件系统的过程叫做格式化常见的文件系统fat32,ntfs,是windows所使用的。ext2,ext3,ext4是linux推荐的文件系统。不同文件系统支持的分区大小,单个文件大小,日志功能有区别,尤其是性能方面。llinux不同版本支持的原创 2015-03-26 18:29:45 · 846 阅读 · 0 评论 -
linux基础教程(6)软件安装和开源业管理
linux是开源的,开源的核心理念是,不要重复发明轮子(1)源代码源代码一般会打包成tar.gz归档压缩文件安装一般首先要解压缩然后./configure 检查编译环境,这一步会生成makefilemake 对代码进行编译make install 将生成的可执行文件安装到当前计算机中(2)rpmredhat pakage manager 最早是给红帽linu原创 2015-03-26 19:09:38 · 447 阅读 · 0 评论 -
linux操作系统基础(3)lamp架构的搭建和使用
(1)构建LAMP(LINUX + APACHE + MYSQL + PHP)网站A安装必要的软件1.Install SSH Client and Server (for my remote access)sudo apt-get install ssh2. Install Database Server(传言现在只能装5.0的版本,别的我没实践过)sudo apt-get转载 2015-03-23 16:38:11 · 362 阅读 · 0 评论 -
linux中级教程-中级shell
1、变量linux中的变量分为两类,用户(环境)变量和临时(本地)变量。环境变量存在于所有shell中。本地变量存在于当前shell中,所以本地变量中一定有环境变量。注意是shell不是用户,所以如果一个用户打开了多个shell,它们之间的非环境变量的本地变量是不能共享的。(1)环境变量的设置过程如下 每一次用户登录时/etc/profile文件被读取,设置变量原创 2015-07-01 23:02:41 · 1152 阅读 · 0 评论 -
计算机硬件结构
(1)现代计算机的结构如下图片来自于http://www.cnblogs.com/jacksu-tencent/p/3378518.html(2)硬盘接口主要有sata (上途中的serial ata),ide,scsi几种。转载 2015-03-12 14:09:07 · 525 阅读 · 0 评论 -
git常见用法
git commit -m “sql an table framework in mysql”git push origin developgit add QualityEva.sqlgit pull origin developgit checkout develop原创 2017-09-30 13:54:54 · 233 阅读 · 0 评论 -
Linux常见命令
time命令例子 time ps aux time后面的指令会被执行,time负责测算执行时间 real 0m0.032s user 0m0.004s sys 0m0.016s real是实际的时钟时间。user是进程在用户模式下话费的时间。sys是进程在内核中的时间。real是后两者的和加上进程被阻塞的时间(如其他进程的时间片和IO阻塞)set查看本地...原创 2016-07-08 01:23:46 · 1074 阅读 · 1 评论 -
linux shell的中级教程
1、变量linux中的变量分为两类,用户(环境)变量和临时(本地)变量。环境变量存在于所有shell中。本地变量存在于当前shell中,所以本地变量中一定有环境变量。注意是shell不是用户,所以如果一个用户打开了多个shell,它们之间的非环境变量的本地变量是不能共享的。(1)环境变量的设置过程如下 每一次用户登录时/etc/profile文件被读取,设置变量原创 2017-05-10 17:04:52 · 446 阅读 · 0 评论 -
linux操作系统入门(1)启动和目录介绍
(1)linux操作系统的启动过程第一步,BIOS开机自检第二步,BIOS交给启动设备进行启动,然后启动设备上的grub程序开始引导linux启动。grub是一个GNU项目的多操作系统选择启动程序第三步,进行内核引导,以后会详细叙述第四步,运行init程序第五步,系统初始化第六步,建立终端第七步,用户登入 (2)linux根目录下各个文件...原创 2015-03-11 17:48:54 · 671 阅读 · 0 评论 -
linux和磁盘(2):文件系统和磁盘管理
(1)文件系统磁盘设备的使用有三个步骤,第一创建新分区,第二指定文件系统,第三进行挂载。没有文件系统的设备被称为裸设备创建文件系统的过程叫做格式化常见的文件系统fat32,ntfs,是windows所使用的。ext2,ext3,ext4是linux推荐的文件系统。不同文件系统支持的分区大小,单个文件大小,日志功能有区别,尤其是性能方面。llinux不同版本支持的文件系统不同。即使不支持,通过安装驱动原创 2016-08-25 20:06:31 · 2017 阅读 · 0 评论 -
linux基础教程(9)权限机制
linux中的每一个用户都属于一个用户组。每个用户组拥有唯一的GID每个用户拥有唯一的UID。有下面三种用户root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限; 虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥原创 2016-07-09 01:58:44 · 384 阅读 · 0 评论 -
windows驱动设计——WDM
当用户模式程序需要读取设备数据时,调用win32 api函数。比如readfile。在windows2000中,有很多种驱动程序。本文主要介绍WDM驱动程序。 一个完整的驱动程序包含很多例程。当操作系统遇见一个IRP是,便调用驱动程序中的例程来执行该IRP的各种操作。在windows内核中,中断按照其有限等级分为32个级别。2、WDM驱动程序的基本结构原创 2016-07-08 14:50:34 · 273 阅读 · 0 评论