随笔分类 - OperatingSys

摘要:测试环境:c++ ,vs2005, release先确认一下这里“低地址高地址”的定义,这里并不是指的大端小端中的地址高低,而是内存中的地址,如下:00421ae0为相对低地址,00421ae8为相对高地址.1.全局变量#include "stdafx.h"int gNumber1 = 1234; int gNumber2 = 5678; int _tmain(int argc, _TCHAR* argv[]) { scanf("%d %d", &gNumber1, &gNumber2); 00401000 push off... 阅读全文
posted @ 2012-11-20 20:44 Mr.Rico 阅读 (229) | 评论 (0) 编辑
摘要:0. 背景原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制,同时也是一些常见的多线程Bug的源头。本文主要讨论了三个问题:1. 多线程程序中对变量的读写操作是否是原子的?2. 多线程程序中对Bit field(位域)的读写操作是否是线程安全的?3. 程序员该如何使用原子操作?1. 多线程环境下对变量的读写操作是否是原子的?我们先从一道很热门的百度笔试题讲起。很多人讲不清楚其背后的原理,下面我们就来对它进行一下剖析(其实这个题目有点歧义,后面我们会讲到):以下多线程对int型变量x的操作,哪几个需要进行同步:( ) A. x=y; B. x++; 阅读全文
posted @ 2012-11-10 10:44 Mr.Rico 阅读 (74) | 评论 (0) 编辑
摘要:Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下图。Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。Linux内核高端内存的由来 当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如逻辑地址0xc0000003对应的物理地址为0×3,0xc0000004对应的物理地址为0×4,… …,逻.. 阅读全文
posted @ 2012-11-08 09:38 Mr.Rico 阅读 (111) | 评论 (0) 编辑
摘要:随着要维护的服务器增多,遇到的各种稀奇古怪的问题也会增多,要想彻底解决这些"小"问题往往需要更深的Linux方面的知识。越专业、分工越细的 工程师,在这方面的要求也就越高。这次,对MySQL Swap的问题的探索过程,就一不小心掉进了Linux Memory Managemant(Linux MM)的研究中去了,爬了很久才出来,这里做一个系列笔记。笔记中很多内容都是参考《Understanding the Linux Kernel, 3rd Edition》、Linux Source Code等地方,自己再做了一些总结,觉得有意义的总结这里记录一下,供参考。1. 写在前面L 阅读全文
posted @ 2012-10-08 14:31 Mr.Rico 阅读 (374) | 评论 (0) 编辑
摘要:在支持MMU的32位处理器平台上,Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同。Linux运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB的物理内存根据不同需求映射到整个4GB的虚拟存储空间中。 物理存储空间布局 Linux的物理存储空间布局与处理器相关,详细情况可以从处理器用户手册的存储空间分布表(memory map)相关章节中查到,我们这里只列出嵌入式处理器平台Linux物理内存空间的一般布局,如图18-4所示。 图18-4 Linux物理内存空间一... 阅读全文
posted @ 2012-10-08 14:24 Mr.Rico 阅读 (5159) | 评论 (0) 编辑
摘要:应同学需求,在考试之后帖出这个实验程序。与网络上可以下载到的大多数生产者消费者问题模拟程序不同,本程序使用进程(而非线程)模拟,基于共享内存读写“产品”。同时给出了Windowst和Linux下实现的源代码,使用gcc编译通过。 本程序仅供参考,请勿挪做他用。 源代码下载: 这里(Linux 版)或者 这里(Windows 版)linux代码: View Code #include<stdio.h>#include<time.h>#include<unistd.h>#include<s... 阅读全文
posted @ 2012-06-27 22:28 Mr.Rico 阅读 (2807) | 评论 (0) 编辑
摘要:下面,让我们先来看看PC机上的第一个图形界面——Xerox Alto (该系统并未商用,主要用于研究和大学),其于1973年被施乐公司Xerox Palo Alto Research Center (PARC) 所 设计,从此,开启了计算机图形界面的新纪元,80年代以来,操作系统的界面设计经历了众多变迁,OS/2, Macintosh, Windows, Linux, Symbian OS ,各种操作系统将 GUI 设计带进新的时代。下面是其图片(70年代的东西看起来还不错哦) Source: toastytech.com 1981-1985Xerox 8010 Star ... 阅读全文
posted @ 2011-04-12 18:46 Mr.Rico 阅读 (133) | 评论 (0) 编辑