Code Monkey home page Code Monkey logo

onix's People

Contributors

acevest avatar gnuqb114514 avatar lunarstore avatar miny1233 avatar orengeokami avatar stevenbaby avatar yinghaoyu avatar znyinyyniu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

onix's Issues

疑问:关于断言的有效性问题

请问一下,在 kernel/memory.c 中的第 171 行,函数 get_page() 中这一句断言:

assert(free_pages >= 0);

为什么是有效的呢?无符号整数应该无论如何都会大于等于 0

如果确实有错误的话,能否将该部分改成如下形式:

assert(free_pages > 0);
free_pages--;

望解答疑惑。初来 Github,如若有冒犯,望谅解。

疑似无用参数

minix.c文件中int minix_readdir(inode_t *inode, dentry_t *entry, size_t count, off_t offset)函数 size_t count疑似没有被该函数使用

minix.c文件中疑似笔误

minix.c文件中static inode_t *iget(dev_t dev, idx_t nr)函数中出现inode->mtime = inode->mtime;疑似笔误

🍕请教一个小问题

请教一个Onix的问题,task_to_user_mode函数里面为什么不用设置tss.esp0的值?这样用户态init_user_thread在调用系统调用或者被时钟中断的时候,不就无法进行栈切换吗?

brk系统调用

brk向下调整堆空间时,未没有修改task_t中的brk字段。导致即使缩下了堆空间的最高位置,仍能触发缺页中断访问到其不应该拥有的虚拟内存地址。

console.c state_esc函数

console.c文件
static _inline void state_esc(console_t *con, char ch)
是否考虑在最开始添加con->state = STATE_NOR; 将状态设置为STATE_NOR状态

请教一下找不到全局变量的问题

我自己写了一个内核,用objcopy转成了raw binary,但是如果我使用类似这样的代码:
printk("hello world");

或者是其他的全局变量,都是读不出任何数据。

char tmp[128] = "ok xdm";
int init()
{
  printk(tmp);
  return 0;
}

我反汇编看了一下,发现这些数据都在,只是汇编代码中都访问了错误的地址,有没有什么办法解决呢?

使用__atrribute__((packed)) 报错

在做全局描述符表时,使用__atrribute__((packed)) 会报错

src/include/onix/global.h:22:17: error: expected declaration specifiers or ‘...’ before ‘(’ token
22 | } atrribute((packed)) descriptor_t;

gcc 版本
gcc (Ubuntu 11.1.0-1ubuntu1~18.04.1) 11.1.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

识别硬盘获取的信息

Onix 中将识别硬盘获得的数据的第 1、3、6 个 word 分别视为 cylinders, heads, sectors per track 信息,但是我查询了 相关手册 (硬盘识别数据说明部分位于 7.16.7) ,里面对这些 word 的说明是 Obsolete 即这些数据是无效信息。想请教一下作者参考的资料?

我写的代码进入保护模式后跳转会导致虚拟机停机

大佬,我看了你的视频和你的代码,也想自己写一个,但是进入了保护模式后,怎么也无法跳转。每次一跳转就会崩溃,我怀疑是GDT表写得有问题,但是我检查了很多遍还是没有成功,能帮我看看代码嘛。
https://github.com/miny1233/xsOS/blob/main/boot/setup.s
就是这个程序里面,setup载入到0x90000上,想用保护模式进入head程序,head在0x0上。

关于对mutex.h中mutex_t的疑问

image
image

mutex的定义中等待队列waiters是否有作用?
在单处理器中,可以通过关中断实现原子操作。大多数情况下,线程调度由时钟中断引起。
假如有三个内核线程A、B和C同时访问资源R,在访问R之前需要抢先获得锁【lock_acquire()】。假设B先获得锁,进入 mutex_lock(),在此期间已经关闭中断了,进而导致系统无法通过时钟中断调度其他线程,其他线程进不来,达到实现原子操作的目的。那么mutex的定义中等待队列waiters是否有作用?

gnome的terminal打不开问题

网上说先输入gnome-terminal查看报错

[root@staraire ~]# gnome-terminal
# Locale not supported by C library.
#       Using the fallback 'C' locale.
# Failed to parse arguments: Cannot open display:

sudo locale-gen en_US.UTF-8
下载了en_US.UTF-8

网上的很多方案都试过了,最终找到一个办法解决了
https://qastack.cn/ubuntu/599808/cannot-set-lc-ctype-to-default-locale-no-such-file-or-directory

sudo echo "LC_ALL=en_US.UTF-8" >> /etc/environment
sudo echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
sudo echo "LANG=en_US.UTF-8" > /etc/locale.conf
sudo locale-gen en_US.UTF-8

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.