我正在试着通读pintos的源代码。在调用init.c文件中的main()之后,当调用thread_init()时,它会将指针移动到包含main方法的页面的开始位置。然后调用以下代码:
thread.c文件的init_thread方法中的memset (t,0,sizeof *t)。
我需要知道,这是否清除了包含main()方法代码的内存内容?
需要帮助……
发布于 2017-05-28 18:52:08
恐怕你的编程技能暂时不适合做这件事。我强烈建议您重新学习入门课程,尤其是C语言的入门课程。
我猜你的意思是:
init_thread (initial_thread, "main", PRI_DEFAULT);那么,让我们来看看init_thread:
init_thread (struct thread *t, const char *name, int priority)首先,我们很容易看到"main“是线程的一个名称。与名为main的函数没有关系。
{
enum intr_level old_level;
ASSERT (t != NULL);
ASSERT (PRI_MIN <= priority && priority <= PRI_MAX);
ASSERT (name != NULL);
memset (t, 0, sizeof *t);memset位于t指向的内存中,t是第一个参数。从调用中,您可以看到它是initial_thread指向的内存。
t->status = THREAD_BLOCKED;
strlcpy (t->name, name, sizeof t->name);在这里,字符串main用strlcpy放在适当的位置。
https://stackoverflow.com/questions/44225717
复制相似问题