0709C++

来源:互联网 发布:五线谱翻译简谱软件 编辑:程序博客网 时间:2024/05/16 07:47

类型转换:
int b=static_cast(2.3)://CPP显示转换

构造函数初始化

class myclass{public :    int x,y;    myclass(int a):x(a),y(a){//赋值初始化    cout<<"构造"<<endl;    }};//构造函数初始化 myclass my1=5; myclass my1(5); myclass my3=myclass(5); myclass my4=(myclass)5;

explict关键字:禁止隐式转换。
不能隐式转换.

has-A:包含关系
一个类中定义了一个类;
uses-A:
一个类部分使用一个类,通过类之间成员函数相互联系
is-A:
继承:

队列:处理多线程。
互斥解决线程冲突;
事件解决线程通信;
临界区解决线程冲突;
时间同步线程

程序加载的共享库放入stack与heap之间;
环境变量/命令行参数 放入stack与3G之间;
MMU映射基本单位是4K;

不同进程,通用一块内核控件

PCB

进程控制块:task_struct结构体;
主要熟悉:
1.进程id;
2.进程状态;
3.需要恢复的一些寄存器的值;
4.描述控制终端信息;
5.当前工作目录;
6.umask目录
7.文件描述符表(文件描述符可以理解是一个数,句柄,拿着这个数,能够找到这个文件):包含很多指向file结构体的指针;
8.跟信号相关的信息
9.用户id和组id;
10.会话和进程组
11.进程可以使用的资源上限

环境变量

是指在操作系统中用来指定操作系统运行环境的一些参数
①本质:字符串;
②有统一的格式:名=值
③值用来描述进程环境信息
加载位置:与命令行参数类似,位于用户区,高于stack起始位置;
如PATH、
SHELL(命令解析器)、(如date,那么shell解析器解析后,shell去/usr/bin目录下的date,运行date)(收到命令date,解析后,去环境变量目录,在环境目录中一个一个按照$PATH顺序目录里面找。)
/usr/bin/date 则是直接运行date程序;
打印全局变量

extern char **environ;int main(){    for(int i=0;environ[i];i++){        printf("%s\n",environ[i]);}

环境变量信息

getenv();
setenv();

父进程与子进程还有shell进程,
shell进程正常情况下 执行./a.out的时候,shell退居后台,执行完成后,shell抢占前台。shell不知道子进程(shell、父子进程共用一个终端。)

IPC进程间通信:
进程地址空间相互独立,每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中
通信方式:
1.管道(使用最简单)
pipe:
fifo(有名管道):用于非血缘关系进程间通信
2.信号(开销最小)
3.共享映射区:mmap函数,函数的参数使用注意事项
4.本地套接字(最稳定)

l:符号链接;占用磁盘存储,会记录指向的路径
管道:
1.本质是一个为文件,内核缓冲区;
2.由2个文件描述符引用,一个表示读端,一个表示写端
3.规定数据从管道写端流入管道,读端流出。
管道的原理:管道实质上是内核使用环形队列机制,借助内核缓冲区(4K)实现的。
特点:

子进程也掌握着管道的读写两端,完成父子进程;

为了保证数据的单向流动,可以规定父进程写,子进程读。
人为规定:fd[0]读端,fd[1]写端

原创粉丝点击